Il 03/01/2014 21:19, Holger Hans Peter Freyther ha scritto:
>> > So the process does not suspend and the TOS appears to be something
>> > wird. Do you have an idea of what could go wrong?
> I think it is a race:
> 
> _after_ the process has been suspended by the primitive the async queue
> is ran which will put back the semaphoreOOP into the myList.
> 
> (gdb) bt
> #0  0xb76d2901 in remove_process_from_list 
> (processOOP=processOOP@entry=0x40442c68)
>     at interp.c:1399
> #1  0xb76d29dc in add_last_link (semaphoreOOP=0x4043f6c0, 
>     processOOP=processOOP@entry=0x40442c68) at interp.c:1478
> #2  0xb76d2a39 in sleep_process (processOOP=processOOP@entry=0x40442c68) at 
> interp.c:1887
> #3  0xb76d73cf in resume_process (processOOP=processOOP@entry=0x40489e78, 
>     alwaysPreempt=<optimized out>, alwaysPreempt@entry=false) at interp.c:1797
> #4  0xb76e43bf in _gst_sync_signal 
> (semaphoreOOP=semaphoreOOP@entry=0x40489e80, 
>     incr_if_empty=incr_if_empty@entry=true) at interp.c:1544
> #5  0xb76e4717 in _gst_do_async_signal (semaphoreOOP=0x40489e80) at 
> interp.c:1559
> #6  0xb76e58bf in empty_async_queue () at interp.c:1632
> #7  _gst_interpret (processOOP=processOOP@entry=0x40489e78) at 
> interp-jit.inl:420
> #8  0xb76e6c00 in _gst_nvmsg_send (receiver=receiver@entry=0x4043c800, 
>     sendSelector=sendSelector@entry=0x40489e10, args=args@entry=0x0, 
>     sendArgs=sendArgs@entry=0) at interp.c:2317
> 
> So is it possible that the suspended process is also the get_active_process
> at that time? And then it gets re-inserted into the waiting list?

Doesn't sound impossible.  I'll take a look next week (full week of free
time hacking!)

Paolo

_______________________________________________
help-smalltalk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-smalltalk

Reply via email to