Mantis Bugtracker
  

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0007032 [Squeak] System major always 04-28-08 18:44 04-28-08 19:16
Reporter phb View Status public  
Assigned To
Priority normal Resolution open  
Status new   Product Version 3.9
Summary 0007032: RemoteString>>#text needs to be thread-safe
Description There is a race condition (read after seek) if two processes try to access the sourcecode for the same method concurrently.
Additional Information It can be reproduced using:

[1000000 timesRepeat: [Categorizer class sourceCodeAt: #allCategory]] forkAt: 30.
and then opening a ProcessBrowser.

Since each RemoteString is created as a new instance, an InstanceVariable lock wouldn't do it. Neither a class variable lock as the debugger might want to access a method while the lock is being held.

Thanks to RandalSchwartz on IRC for helping to nail down the problem.
Attached Files

- Relationships

- Notes
(0012045 - 686 - 728 - 728 - 728 - 728 - 728)
sig
04-28-08 19:16

phb - the problem is not with RemoteString. To fix it, we need a file streams protected by mutex (SourceFiles global var).
So, if we going to fix that, we need these streams protected from concurrent access.

Too bad, SourceFiles used in many places , since its global var
I'd prefer to introduce something like SourceControl, with own protocol to read/add sources or search.. and get rid of a SourceFiles global.

in my image, i have 55 references to SourceFiles.. including from Installer, MC, ChangeList.. looks like a major refactoring work
so, the only way, how i see it now, is just avoid using SourceFiles concurrently until someone will came up with major refactoring :)
 

- Issue History
Date Modified Username Field Change
04-28-08 18:44 phb New Issue
04-28-08 19:16 sig Note Added: 0012045


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