Mantis Bugtracker

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0005709 [Croquet] Hedgehog minor random 01-07-07 21:40 02-01-07 04:17
Reporter howardstearns View Status public  
Assigned To
Priority normal Resolution open  
Status new  
Summary 0005709: FarRefMap not thread-safe
Description I sometimes get errors within FarRefMap operations like #growTo:, where indexes aren't valid any more.

Island exports is a FarRefMap which contains a weak array, and has several operations that are written assuming that they will be atomic with respect to changes in that array.
Additional Information I have only observed this problem with KCroquetParticipant, which uses quite a few asynchronous processes in addition to the ones used by other CroquetParticipants. (Decoding of streaming media, EmbeddedApp updates, asynchrounous sync'ing of new islands...) It could be that these are broken. Or it could be that I only see this in KCroquetParticipant because it's the only Participant that I leave running for several days. (Other bugs like 5695 and 5708 keep other Participants from running with user interaction for that long.)

The attached changeset adds a mutex to FarRefMap, which is used by all the operations that might be so affected. This is not in a K...-specific subclass because Island default needs the mutex, too.

It might be a good idea to instument the mutex locking to see what processes are interfering with each other. I haven't had time to do that yet, but I wanted to report this in case anyone else was struggling with the same problem.
Attached Files  ThreadSafeFarRefMap.3.cs.gz [^] (1,181 bytes) 01-07-07 21:40

- Relationships
related to 0005722new  Transcript usage can cause undesireable interleavings 

- Notes
(0008875 - 260 - 272 - 432 - 432 - 432 - 432)
01-13-07 20:20

In Islands-ar.40, Andreas noticed and removed a transcript send from FarRefMap>>findElementOrFlag:. It's possible that this simple change will fix the problem, per [^]
But it's not easy to test positively...
(0008877 - 209 - 215 - 215 - 215 - 215 - 215)
01-14-07 17:11

I got the error again after using Islands-ar.40 and not using ThreadSafeFarRefMap.3.cs.
This was on a headless FreeBSD after six hours of being connected overnight over WAN to a Mac and a Windows participant.
(0009317 - 91 - 91 - 91 - 91 - 91 - 91)
02-01-07 04:17

The ThreadSafeFarRefMap changeset is incorporated into Islands-ar.41.mcz in the repository.

- Issue History
Date Modified Username Field Change
01-07-07 21:40 howardstearns New Issue
01-07-07 21:40 howardstearns File Added: ThreadSafeFarRefMap.3.cs.gz
01-13-07 20:20 howardstearns Note Added: 0008875
01-13-07 20:26 howardstearns Relationship added related to 0005722
01-14-07 17:11 howardstearns Note Added: 0008877
02-01-07 04:17 howardstearns Note Added: 0009317

Mantis 1.0.8[^]
Copyright © 2000 - 2007 Mantis Group
46 total queries executed.
32 unique queries executed.
Powered by Mantis Bugtracker