[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

MacTCP pb with Quadra builtin Ethernet

We have a problem here using MacTCP.lisp from inside the menu event handler.
The problem occurs iff:

1)  Mac is a Quadra 700, 900 or 950, and
2)  it uses the Built-in Ethernet, and
3)  virtual memory is off.

IIf the Quadra is using an Ethernet Card in a NUbus slot then the problem never occurs
(virtual memory has no effect). We are running on System 7.0.1 with
MacTCP 1.1 and Ethertalk Phase2 2.3. The Quadra is caught in an endless loop when
we try to call the function SHOW-LOCAL-HOST-NAME from the menu-item-action-function,
while it's working fine when we call it from the Listener.
SHOW-LOCAL-HOST-NAME calls a trap and reads a record with RREF.
It calls TCP-HOST-CNAME that calls TCP-ADDR-TO-NAME that does
an (RREF %hinfo-record% hostinfo.result) inside a while loop, this is
where the endless-busywait occurs. It seems that the device-driver interrupts
are disabled. Furthermore a (PRINT "ANYTHING") inside the while loop is
making the function running fine, as these interrupts would be enabled again.

TThe following piece of code will catch the system in the endless-loop:

(load "MacTCP.lisp")

(defvar crash-test-menu)

((setf crash-test-menu
      (make-instance 'menu
        :menu-title "CrashTest"
         (make-instance 'menu-item
           :menu-item-title "my host name"
           :menu-item-action  #'(lambda ()
                                  (eval-enqueue '(show-local-host-name))))
         (make-instance 'menu-item
           :menu-item-title "my host name with crash"
           :menu-item-action  #'(lambda ()

(defun show-local-host-name ()
  (message-dialog (ccl::tcp-host-cname (ccl::%tcp-getaddr))))

(menu-install crash-test-menu)

ddoes anyone have a clue what's wrong here?

please reply to:

hsiung@ifi.wwz.unibas.ch or hsiung@urz.unibas.ch or domenig@urz.unibas.ch