Comment #9 on issue 3498 by rydier: remove:ifAbsent: in linked list leads to interruption/sync problems
http://code.google.com/p/pharo/issues/detail?id=3498

Reverting works, or changing the call in suspend to removeLink:ifAbsent: (which is the same as old remove:ifAbsent:)

Would be nice if you could try with the version I posted in #5 though, as it both preserves the new functionality of being able to pass regular objects, as well as (afaict) introduces no new possible suspension points compared to the old version which could lead to this error.

The difference is removeLink:ifAbsent: is called instead of removeLink:, which does not raise an error with the empty block argument, ie: If the link has been removed by another process while my process is blocked after linkOf:, but before removeLink:ifAbsent:, the removeLink:ifAbsent: would execute the (in Process >> suspend case) empty block and do nothing rather than the default in removeLink: of raising an error.


Reply via email to