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