How to debug primitive failures?

Chris Pettitt cpettitt at vidigiani.dyndns.org
Wed May 21 17:52:01 UTC 2003


Somehow lost the subject when I sent this out. I should also note that
this primitive failure is raised after I connect to the server socket
using telnet.

Thanks,
Chris

On Wed, 21 May 2003, Chris Pettitt wrote:

> When I try to run the following code, I get a "primitive has failed"
> error:
>
> Socket initializeNetwork.
> acceptor _ Socket newTCP.
> acceptor listenOn: 8000.
> [
>  connection _ acceptor waitForAcceptUntil: (Socket deadlineSecs: 120).
>  connection ~= nil ifTrue: [
>   [Transcript show: 'Received Connection!'. connection close.] fork.
>  ].
>  false.
> ] whileTrue.
> acceptor close.
>
> My question is: how do I debug a primitive error in Squeak? I would have a
> lot better luck debugging this if I could find the C code, I am sure.
>
> Thanks,
> Chris
>
>
>
> Here is the stack, for those interested:
>
> VM: Win32 - Squeak3.4 of 1 March 2003 [latest update: #5170]
> Image: Squeak3.5 [latest update: #5180]
>
> Socket(Object)>>error:
>  Receiver: a Socket[destroyed]
>  Arguments and temporary variables:
>   aString:  'a primitive has failed'
>  Receiver's instance variables:
>   semaphore:  a Semaphore()
>   socketHandle:  nil
>   readSemaphore:  a Semaphore()
>   writeSemaphore:  a Semaphore()
>   primitiveOnlySupportsOneSemaphore:  true
>
> Socket(Object)>>primitiveFailed
>  Receiver: a Socket[destroyed]
>  Arguments and temporary variables:
>
>  Receiver's instance variables:
>   semaphore:  a Semaphore()
>   socketHandle:  nil
>   readSemaphore:  a Semaphore()
>   writeSemaphore:  a Semaphore()
>   primitiveOnlySupportsOneSemaphore:  true
>
> Socket>>primAcceptFrom:receiveBufferSize:sendBufSize:semaIndex:
>  Receiver: a Socket[destroyed]
>  Arguments and temporary variables:
>   aHandle:  a ByteArray(16 94 73 70 0 0 0 0 248 96 11 0)
>   rcvBufSize:  8000
>   sndBufSize:  8000
>   semaIndex:  15
>  Receiver's instance variables:
>   semaphore:  a Semaphore()
>   socketHandle:  nil
>   readSemaphore:  a Semaphore()
>   writeSemaphore:  a Semaphore()
>   primitiveOnlySupportsOneSemaphore:  true
>
> Socket>>primAcceptFrom:receiveBufferSize:sendBufSize:semaIndex:readSemaIndex:writeSemaIndex:
>  Receiver: a Socket[destroyed]
>  Arguments and temporary variables:
>   aHandle:  a ByteArray(16 94 73 70 0 0 0 0 248 96 11 0)
>   rcvBufSize:  8000
>   sndBufSize:  8000
>   semaIndex:  15
>   aReadSema:  16
>   aWriteSema:  17
>  Receiver's instance variables:
>   semaphore:  a Semaphore()
>   socketHandle:  nil
>   readSemaphore:  a Semaphore()
>   writeSemaphore:  a Semaphore()
>   primitiveOnlySupportsOneSemaphore:  true
>
>
> --- The full stack ---
> Socket(Object)>>error:
> Socket(Object)>>primitiveFailed
> Socket>>primAcceptFrom:receiveBufferSize:sendBufSize:semaIndex:
> Socket>>primAcceptFrom:receiveBufferSize:sendBufSize:semaIndex:readSemaIndex:writeSemaIndex:
>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> Socket>>acceptFrom:
> [] in Socket class>>acceptFrom:
> BlockContext>>repeatWithGCIf:
> Socket class>>acceptFrom:
> Socket>>accept
> Socket>>waitForAcceptUntil:
>



More information about the Squeak-dev mailing list