Hi Esteban, while building packages for OBS and going the compile warnings (one of the nice things of newer compilers is the increased diagnostic) I noticed this:
[ 196s] /usr/src/packages/BUILD/src/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c:4525:20: warning: iteration 64u invokes undefined behavior [-Waggressive-loop-optimizations] [ 196s] if ((semaIndices[sigNum]) > 0) { [ 196s] ^ [ 196s] /usr/src/packages/BUILD/src/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c:4524:9: note: containing loop [ 196s] while (sigNum <= (signalArraySize())) { while (sigNum <= (signalArraySize())) { if ((semaIndices[sigNum]) > 0) { setSignalNumberhandler(sigNum, (originalSignalHandlers())[sigNum]); } sigNum += 1; } semaIndices has signalArraySize()/NSIG number of entries and is zero based, it is being accessed with sigNum==NSIG which means one entry beyond the memory of the array? Can you confirm this? restoreDefaultSignalHandlers "Restore signal handlers to their original behaviors." | sigNum | <returnTypeC: 'void'> semaIndices = nil "nil if in interpreter simulation" ifFalse: [sigNum := 1. [sigNum <= self signalArraySize] whileTrue: [((semaIndices at: sigNum) > 0) ifTrue: [self setSignalNumber: sigNum handler: (self originalSignalHandlers at: sigNum).]. sigNum := sigNum + 1]] So it is one based but the array doesn't have an extra element to make it work? How is this normally handled in slang code? holger