Hi
I wanted to step into SharedQueue code, but got a hanged vm on simple test code below.
It works fine in Pharo 3 but hangs in Pharo4-40611 and Pharo5-50029,
it does not hang in squeak 4.5 but the Monitor code is not the same.
In a playgound, execute the first two lines of code then select
the third line and 'Debug it' (right click menu option) to step into it.
q := SharedQueue new .
q nextPut: 1 .
q next.
Everything goes fine until stepping into 'aBlock value' in Monitor>>critical:
critical: aBlock
�� �� �� �� ^[
�� �� �� �� self enter.
Hangs here >>>>aBlock value<<<<<< ]
�� �� �� �� �� �� �� �� ensure: [self exit].
The vm get hanged and can be interrupted only once, then it is completely hanged.
I once got an error message Error: Monitor access violation message and a stack trace in debug log before hanging
but was unable to reproduce it (something related to effectiveProcess?)
--- The full stack ---
Monitor(Object)>>error:
Monitor>>checkOwnerProcess
Monitor>>waitWhile:for:maxMilliseconds:
Monitor>>waitWhile:for:
Monitor>>waitWhile:
[
monitor waitWhile: [ items isEmpty ].
items removeFirst ] in SharedQueue>>next
[
self enter.
aBlock value ] in Monitor>>critical:
BlockClosure>>ensure:
Monitor>>critical:
SharedQueue>>next
UndefinedObject>>DoIt
CompiledMethod>>valueWithReceiver:arguments:
[ aCompiledMethod valueWithReceiver: anObject arguments: (evalContext ifNil: [ #() ] ifNotNil: [ {evalContext} ]) ] in RubSmalltalkEditor>>debug:receiver:in:
[
self value.
Processor terminateActive ] in BlockClosure>>newProcess
-------------------------------------------------------------------------------
Can someone have a look and confirm it is a bug before I open a bug entry ?
And/or give me hints on how to debug this ?
I tried to modify Monitor>>waitWhile: and put a delay, put traces but still hanging.
DebugSession someInstance stepInto does not hang, but I'm not sure that the execution flow is the same ...
TIA
--
Regards,
Alain