|Anonymous | Login||10-22-2021 20:38 UTC|
|Main | My View | View Issues | Change Log | Docs|
|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|
|Summary||0005709: FarRefMap not thread-safe|
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.
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|
(0008875 - 260 - 272 - 432 - 432 - 432 - 432)
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 https://lists.wisc.edu/read/messages?id=1282867#1282867 [^]
But it's not easy to test positively...
(0008877 - 209 - 215 - 215 - 215 - 215 - 215)
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)
|The ThreadSafeFarRefMap changeset is incorporated into Islands-ar.41.mcz in the repository.|
|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.