Hi Sven,

There seems to be a new problem with Zinc when building Seaside. Not
sure what it is:

+ build.sh -i seaside3 -s seaside3-zinc -o seaside3-zinc
build.sh: Execution aborted (/usr/local/bin/cog)
  THERE_BE_DRAGONS_HERE
  PrimitiveFailed: primitive #signal in a Semaphore() failed
  4 September 2011 5:53:45 pm

  VM: unix - i686 - linux-gnu - Croquet Closure Cog VM [CoInterpreter
VMMaker-oscog.35]
  Image: Pharo1.3 [Latest update: #13298]

  Semaphore(Object)>>primitiveFailed:
        Receiver: a Semaphore()
        Arguments and temporary variables:
                selector:       #signal
        Receiver's instance variables:
                firstLink:      nil
                lastLink:       nil
                excessSignals:  1073741823


  Semaphore(Object)>>primitiveFailed
        Receiver: a Semaphore()
        Arguments and temporary variables:

        Receiver's instance variables:
                firstLink:      nil
                lastLink:       nil
                excessSignals:  1073741823


  Semaphore>>signal
        Receiver: a Semaphore()
        Arguments and temporary variables:

        Receiver's instance variables:
                firstLink:      nil
                lastLink:       nil
                excessSignals:  1073741823


  [FinishedDelay := self.
        TimingSemaphore signal] in DelayWaitTimeout(Delay)>>unschedule
        Receiver: a DelayWaitTimeout(282210 msecs)
        Arguments and temporary variables:

        Receiver's instance variables:
                delayDuration:  282210
                resumptionTime:         nil
                delaySemaphore:         a Semaphore()
                beingWaitedOn:  false
                process:        a Process in nil
                expired:        true


  [caught := true.
        self wait.
        blockValue := mutuallyExcludedBlock value] in Semaphore>>critical:
        Receiver: a Semaphore()
        Arguments and temporary variables:
  <<error during printing>
        Receiver's instance variables:
                firstLink:      nil
                lastLink:       nil
                excessSignals:  0


  BlockClosure>>ensure:
        Receiver: [caught := true.
        self wait.
        blockValue := mutuallyExcludedBlock value]
        Arguments and temporary variables:
                aBlock:         [caught
                ifTrue: [self signal]]
                complete:       nil
                returnValue:    nil
        Receiver's instance variables:
                outerContext:   Semaphore>>critical:
                startpc:        42
                numArgs:        0


  Semaphore>>critical:
        Receiver: a Semaphore()
        Arguments and temporary variables:
  <<error during printing>
        Receiver's instance variables:
                firstLink:      nil
                lastLink:       nil
                excessSignals:  0


  DelayWaitTimeout(Delay)>>unschedule
        Receiver: a DelayWaitTimeout(282210 msecs)
        Arguments and temporary variables:

        Receiver's instance variables:
                delayDuration:  282210
                resumptionTime:         nil
                delaySemaphore:         a Semaphore()
                beingWaitedOn:  false
                process:        a Process in nil
                expired:        true


  [self unschedule] in DelayWaitTimeout>>wait
        Receiver: a DelayWaitTimeout(282210 msecs)
        Arguments and temporary variables:

        Receiver's instance variables:
                delayDuration:  282210
                resumptionTime:         nil
                delaySemaphore:         a Semaphore()
                beingWaitedOn:  false
                process:        a Process in nil
                expired:        true


  BlockClosure>>ensure:
        Receiver: [self schedule.
        beingWaitedOn
                ifTrue: [delaySemaphore wait]
                ifFalse: [expired := true...etc...
        Arguments and temporary variables:
                aBlock:         [self unschedule]
                complete:       true
                returnValue:    true
        Receiver's instance variables:
                outerContext:   DelayWaitTimeout>>wait
                startpc:        41
                numArgs:        0


  DelayWaitTimeout>>wait
        Receiver: a DelayWaitTimeout(282210 msecs)
        Arguments and temporary variables:

        Receiver's instance variables:
                delayDuration:  282210
                resumptionTime:         nil
                delaySemaphore:         a Semaphore()
                beingWaitedOn:  false
                process:        a Process in nil
                expired:        true


  Semaphore>>waitTimeoutMSecs:
        Receiver: a Semaphore()
        Arguments and temporary variables:
                anInteger:      282210
                d:      a DelayWaitTimeout(282210 msecs)
        Receiver's instance variables:
                firstLink:      nil
                lastLink:       nil
                excessSignals:  0


  Socket>>waitForConnectionFor:ifTimedOut:
        Receiver: a Socket[waitingForConnection]
        Arguments and temporary variables:
                timeout:        300
                timeoutBlock:   [^ nil]
                startTime:      3617674
                msecsDelta:     300000
                msecsEllapsed:  17790
                status:         1
        Receiver's instance variables:
                semaphore:      a Semaphore()
                socketHandle:   #[230 40 102 78 0 0 0 0 64 77 219 8]
                readSemaphore:  a Semaphore()
                writeSemaphore:         a Semaphore()


  Socket>>waitForAcceptFor:
        Receiver: a Socket[waitingForConnection]
        Arguments and temporary variables:
                timeout:        300
        Receiver's instance variables:
                semaphore:      a Semaphore()
                socketHandle:   #[230 40 102 78 0 0 0 0 64 77 219 8]
                readSemaphore:  a Semaphore()
                writeSemaphore:         a Semaphore()


  ZnMultiThreadedServer>>serveConnectionsOn:
        Receiver: a ZnMultiThreadedServer(stopped 8080)
        Arguments and temporary variables:
                listeningSocket:        a Socket[waitingForConnection]
                stream:         nil
                socket:         nil
        Receiver's instance variables:
                port:   8080
                process:        nil
                serverSocket:   a Socket[waitingForConnection]
                delegate:       a ZnSeasideServerAdaptorDelegate
                authenticator:  nil
                log:    a ZnLogSupport
                lastRequest:    nil
                lastResponse:   nil
                lock:   a Mutex
                connections:    an OrderedCollection()


  [[serverSocket isValid
                ifFalse: [^ self listenLoop].
        self serveConnectionsOn: serverSocket] repeat.
        nil] in ZnMultiThreadedServer>>listenLoop
        Receiver: a ZnMultiThreadedServer(stopped 8080)
        Arguments and temporary variables:

        Receiver's instance variables:
                port:   8080
                process:        nil
                serverSocket:   a Socket[waitingForConnection]
                delegate:       a ZnSeasideServerAdaptorDelegate
                authenticator:  nil
                log:    a ZnLogSupport
                lastRequest:    nil
                lastResponse:   nil
                lock:   a Mutex
                connections:    an OrderedCollection()


  BlockClosure>>ifCurtailed:
        Receiver: [[serverSocket isValid
                ifFalse: [^ self listenLoop].
        self serveConnectionsOn: serverSoc...etc...
        Arguments and temporary variables:
                aBlock:         [self releaseServerSocket]
                complete:       nil
                result:         nil
        Receiver's instance variables:
                outerContext:   ZnMultiThreadedServer>>listenLoop
                startpc:        52
                numArgs:        0


  ZnMultiThreadedServer>>listenLoop
        Receiver: a ZnMultiThreadedServer(stopped 8080)
        Arguments and temporary variables:

        Receiver's instance variables:
                port:   8080
                process:        nil
                serverSocket:   a Socket[waitingForConnection]
                delegate:       a ZnSeasideServerAdaptorDelegate
                authenticator:  nil
                log:    a ZnLogSupport
                lastRequest:    nil
                lastResponse:   nil
                lock:   a Mutex
                connections:    an OrderedCollection()


  [[self listenLoop] repeat.
        nil] in ZnMultiThreadedServer(ZnSingleThreadedServer)>>start
        Receiver: a ZnMultiThreadedServer(stopped 8080)
        Arguments and temporary variables:

        Receiver's instance variables:
                port:   8080
                process:        nil
                serverSocket:   a Socket[waitingForConnection]
                delegate:       a ZnSeasideServerAdaptorDelegate
                authenticator:  nil
                log:    a ZnLogSupport
                lastRequest:    nil
                lastResponse:   nil
                lock:   a Mutex
                connections:    an OrderedCollection()


  [self value.
        Processor terminateActive] in BlockClosure>>newProcess
        Receiver: [[self listenLoop] repeat.
        nil]
        Arguments and temporary variables:

        Receiver's instance variables:
                outerContext:   
ZnMultiThreadedServer(ZnSingleThreadedServer)>>start
                startpc:        77
                numArgs:        0



  --- The full stack ---
  Semaphore(Object)>>primitiveFailed:
  Semaphore(Object)>>primitiveFailed
  Semaphore>>signal
  [FinishedDelay := self.
        TimingSemaphore signal] in DelayWaitTimeout(Delay)>>unschedule
  [caught := true.
        self wait.
        blockValue := mutuallyExcludedBlock value] in Semaphore>>critical:
  BlockClosure>>ensure:
  Semaphore>>critical:
  DelayWaitTimeout(Delay)>>unschedule
  [self unschedule] in DelayWaitTimeout>>wait
  BlockClosure>>ensure:
  DelayWaitTimeout>>wait
  Semaphore>>waitTimeoutMSecs:
  Socket>>waitForConnectionFor:ifTimedOut:
  Socket>>waitForAcceptFor:
  ZnMultiThreadedServer>>serveConnectionsOn:
  [[serverSocket isValid
                ifFalse: [^ self listenLoop].
        self serveConnectionsOn: serverSocket] repeat.
        nil] in ZnMultiThreadedServer>>listenLoop
  BlockClosure>>ifCurtailed:
  ZnMultiThreadedServer>>listenLoop
  [[self listenLoop] repeat.
        nil] in ZnMultiThreadedServer(ZnSingleThreadedServer)>>start
  [self value.
        Processor terminateActive] in BlockClosure>>newProcess
  ------------------------------------------------------------

  Processes and their stacks:
  Process: a Process in Process>>resume
    stack:

  Process>>resume
  BlockClosure>>forkAt:named:
  ZnMultiThreadedServer(ZnSingleThreadedServer)>>start
  ZnZincServerAdaptor>>basicStart
  [aServerAdaptor basicStart] in WAServerManager>>start:
  BlockClosure>>ifCurtailed:
  WAServerManager>>start:
  ZnZincServerAdaptor(WAServerAdaptor)>>start
  UndefinedObject>>DoIt
  Compiler>>evaluate:in:to:notifying:ifFail:logged:
  Compiler class>>evaluate:for:notifying:logged:
  Compiler class>>evaluate:for:logged:
  Compiler class>>evaluate:logged:
  [| chunk | val := (self peekFor: $!)
                                ifTrue: [(Compiler evaluate: self nextChunk 
logged: false)
                                                scanFrom: self]
                                ifFalse: [chunk := self nextChunk.
                                        self checkForPreamble: chunk.
                                        Compiler evaluate: chunk logged: true]] 
in [:bar |
  [self atEnd]
                whileFalse: [bar value: self position.
                        self skipSeparators.
                        [| chunk | val := (self peekFor: $!)
                                                ifTrue: [(Compiler evaluate: 
self nextChunk logged: false)
                                                                scanFrom: self]
                                                ifFalse: [chunk := self 
nextChunk.
                                                        self checkForPreamble: 
chunk.
                                                        Compiler evaluate: 
chunk logged: true]]
                                on: InMidstOfFileinNotification
                                do: [:ex | ex resume: true].
                        self skipStyleChunk].
        self close] in 
RWBinaryOrTextStream(PositionableStream)>>fileInAnnouncing:
  BlockClosure>>on:do:
  [:bar |
  [self atEnd]
                whileFalse: [bar value: self position.
                        self skipSeparators.
                        [| chunk | val := (self peekFor: $!)
                                                ifTrue: [(Compiler evaluate: 
self nextChunk logged: false)
                                                                scanFrom: self]
                                                ifFalse: [chunk := self 
nextChunk.
                                                        self checkForPreamble: 
chunk.
                                                        Compiler evaluate: 
chunk logged: true]]
                                on: InMidstOfFileinNotification
                                do: [:ex | ex resume: true].
                        self skipStyleChunk].
        self close] in 
RWBinaryOrTextStream(PositionableStream)>>fileInAnnouncing:
  NonInteractiveUIManager>>progressInitiationExceptionDefaultAction:
  ProgressInitiationException>>defaultAction
  UndefinedObject>>handleSignal:
  ProgressInitiationException(Exception)>>signal
  ------------------------------

  Process: a Process in Delay class>>handleTimerEvent
    stack:

  Delay class>>handleTimerEvent
  Delay class>>runTimerEventLoop
  [self runTimerEventLoop] in Delay class>>startTimerEventLoop
  [self value.
        Processor terminateActive] in BlockClosure>>newProcess
  ------------------------------

  Process: a Process in SmalltalkImage>>lowSpaceWatcher
    stack:

  SmalltalkImage>>lowSpaceWatcher
  [self lowSpaceWatcher] in SmalltalkImage>>installLowSpaceWatcher
  [self value.
        Processor terminateActive] in BlockClosure>>newProcess
  ------------------------------

  Process: a Process in ProcessorScheduler class>>idleProcess
    stack:

  ProcessorScheduler class>>idleProcess
  [self idleProcess] in ProcessorScheduler class>>startUp
  [self value.
        Processor terminateActive] in BlockClosure>>newProcess
  ------------------------------

  Process: a Process in [delaySemaphore wait] in Delay>>wait
    stack:

  [delaySemaphore wait] in Delay>>wait
  BlockClosure>>ifCurtailed:
  Delay>>wait
  InputEventPollingFetcher>>waitForInput
  InputEventPollingFetcher(InputEventFetcher)>>eventLoop
  [self eventLoop] in
InputEventPollingFetcher(InputEventFetcher)>>installEventLoop
  [self value.
        Processor terminateActive] in BlockClosure>>newProcess
  ------------------------------

  Process: a Process in WeakArray class>>finalizationProcess
    stack:

  WeakArray class>>finalizationProcess
  [self finalizationProcess] in WeakArray class>>restartFinalizationProcess
  [self value.
        Processor terminateActive] in BlockClosure>>newProcess
  ------------------------------

  Process: a Process in [delaySemaphore wait] in Delay>>wait
    stack:

  [delaySemaphore wait] in Delay>>wait
  BlockClosure>>ifCurtailed:
  Delay>>wait
  GRPharoPlatform>>cometWait
  CTPusher class>>pingProcess
  [[self pingProcess] repeat.
        nil] in CTPusher class>>startUp
  [self value.
        Processor terminateActive] in BlockClosure>>newProcess
  ------------------------------

  Process: a Process in nil
    stack:

  Array(SequenceableCollection)>>do:
  [:logger |
  logger nextPutAll: 'Processes and their stacks: ';
                 cr.
        Process allInstances
                do: [:each |
                        | ctx |
                        logger nextPutAll: 'Process: ';
                                 print: each;
                                 cr;
                                 nextPutAll: '  stack:';
                                 cr;
                                 cr.
                        ctx := each isActiveProcess
                                                ifTrue: [thisContext sender]
                                                ifFalse: [each 
suspendedContext].
                        ctx
                                ifNotNil: [(ctx stackOfSize: 20)
                                                do: [:s | logger print: s;
                                                                 cr]].
                        logger nextPutAll: '------------------------------';
                                 cr;
                                 cr]] in [Smalltalk logError: aString 
inContext: aContext.
        Smalltalk
                logDuring: [:logger |
                        logger nextPutAll: 'Processes and their stacks: ';
                                 cr.
                        Process allInstances
                                do: [:each |
                                        | ctx |
                                        logger nextPutAll: 'Process: ';
                                                 print: each;
                                                 cr;
                                                 nextPutAll: '  stack:';
                                                 cr;
                                                 cr.
                                        ctx := each isActiveProcess
                                                                ifTrue: 
[thisContext sender]
                                                                ifFalse: [each 
suspendedContext].
                                        ctx
                                                ifNotNil: [(ctx stackOfSize: 20)
                                                                do: [:s | 
logger print: s;
                                                                                
 cr]].
                                        logger nextPutAll: 
'------------------------------';
                                                 cr;
                                                 cr]]] in 
NonInteractiveUIManager>>quitFrom:withMessage:
  [logStream := self openLog.
        aMonadicBlock value: logStream] in SmalltalkImage>>logDuring:
  BlockClosure>>ensure:
  SmalltalkImage>>logDuring:
  [Smalltalk logError: aString inContext: aContext.
        Smalltalk
                logDuring: [:logger |
                        logger nextPutAll: 'Processes and their stacks: ';
                                 cr.
                        Process allInstances
                                do: [:each |
                                        | ctx |
                                        logger nextPutAll: 'Process: ';
                                                 print: each;
                                                 cr;
                                                 nextPutAll: '  stack:';
                                                 cr;
                                                 cr.
                                        ctx := each isActiveProcess
                                                                ifTrue: 
[thisContext sender]
                                                                ifFalse: [each 
suspendedContext].
                                        ctx
                                                ifNotNil: [(ctx stackOfSize: 20)
                                                                do: [:s | 
logger print: s;
                                                                                
 cr]].
                                        logger nextPutAll: 
'------------------------------';
                                                 cr;
                                                 cr]]] in 
NonInteractiveUIManager>>quitFrom:withMessage:
  BlockClosure>>ensure:
  NonInteractiveUIManager>>quitFrom:withMessage:
  NonInteractiveUIManager>>unhandledErrorDefaultAction:
  UnhandledError>>defaultAction
  UndefinedObject>>handleSignal:
  UnhandledError(Exception)>>signal
  UnhandledError class>>signalForException:
  PrimitiveFailed(Error)>>defaultAction
  UndefinedObject>>handleSignal:
  PrimitiveFailed(Exception)>>signal
  PrimitiveFailed class(SelectorException class)>>signalFor:
  Semaphore(Object)>>primitiveFailed:
  Semaphore(Object)>>primitiveFailed
  Semaphore>>signal
  ------------------------------

/srv/jenkins/builder/build.sh: line 170:  4882 Killed
exec "$PHARO_VM" $PHARO_PARAM "$OUTPUT_IMAGE" "$OUTPUT_SCRIPT"
Build step 'Execute shell' marked build as failure
[CHECKSTYLE] Skipping publisher since build result is FAILURE
Archiving artifacts
Recording test results
Finished: FAILURE

On 4 September 2011 16:33, Lukas Renggli <[email protected]> wrote:
>> Yeah, the idea of the weak data structure was to have a fallback to the 
>> current situation in case something went wrong when explicitely managing the 
>> connections. The current implementation now uses a normal ordered 
>> collection. It passes all tests.
>
> Sounds great!
>
>> Note that this version of Zn is way further than what is in 1.3, it also 
>> contains a brand new client I am working on and some important code already 
>> uses this new client. This needs some more testing before it can be included 
>> I guess (although it works for me). I know the Seaside builds use the latest 
>> Zn.
>
> Yes, I update Zn for the Seaside build to the latest version.
>
> Lukas
>
> --
> Lukas Renggli
> www.lukas-renggli.ch
>



-- 
Lukas Renggli
www.lukas-renggli.ch

Reply via email to