{"shas":[["2886f9769bfafadf657323e3abc678f0e4e92a48","1ea48a69f09ca4fa2c0ea576825eb76dcaab3f18@gmail.com","Fixed hanging Thread spec.\n\nThe problem with this spec is that ScratchPad.record is being used to\nsignal that the thread is actually running. The signalling is done by\nsetting the value recorded to :running. But if an exception is raised,\nthe value :running is then overwritten with the exception object. The\nother thread, busy waiting until the value is set to :running then\nbusy waits forever. This race is avoided by using a separate mechanism\nto signal between threads.\n\nIn general, ScratchPad should only be used for computed values or for\ncollecting state values (eg by instrumenting control flow). For other\ncases, like signaling here, we have to make custom mechanisms.\n\nThe thread specs also need to be completely rewritten.","Brian Ford"]],"ref":"refs/heads/master","size":1,"head":"2886f9769bfafadf657323e3abc678f0e4e92a48","push_id":38794815}