Skip to content

Commit 49e9337

Browse files
committed
Granular locking.
1 parent f331a17 commit 49e9337

File tree

1 file changed

+32
-10
lines changed

1 file changed

+32
-10
lines changed

SymbolReader/Symbols.cs

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -113,15 +113,21 @@ public void TryResolveSymbolsForModule(RemoteProcess.Module module)
113113

114114
var name = module.Name.ToLower();
115115

116+
bool isBlacklisted;
116117
lock (symbolReaders)
117118
{
118-
if (!moduleBlacklist.Contains(name))
119+
isBlacklisted = moduleBlacklist.Contains(name);
120+
}
121+
122+
if (!isBlacklisted)
123+
{
124+
try
119125
{
120-
try
121-
{
122-
SymbolReader.TryResolveSymbolsForModule(module, SymbolSearchPath);
123-
}
124-
catch
126+
SymbolReader.TryResolveSymbolsForModule(module, SymbolSearchPath);
127+
}
128+
catch
129+
{
130+
lock (symbolReaders)
125131
{
126132
moduleBlacklist.Add(name);
127133

@@ -140,11 +146,19 @@ public void LoadSymbolsForModule(RemoteProcess.Module module)
140146

141147
var moduleName = module.Name.ToLower();
142148

149+
bool createNew;
143150
lock (symbolReaders)
144151
{
145-
if (!symbolReaders.ContainsKey(moduleName))
152+
createNew = !symbolReaders.ContainsKey(moduleName);
153+
}
154+
155+
if (createNew)
156+
{
157+
var reader = SymbolReader.FromModule(module, SymbolSearchPath);
158+
159+
lock(symbolReaders)
146160
{
147-
symbolReaders[moduleName] = SymbolReader.FromModule(module, SymbolSearchPath);
161+
symbolReaders[moduleName] = reader;
148162
}
149163
}
150164
}
@@ -155,11 +169,19 @@ public void LoadSymbolsFromPDB(string path)
155169

156170
var moduleName = Path.GetFileName(path).ToLower();
157171

172+
bool createNew;
158173
lock (symbolReaders)
159174
{
160-
if (!symbolReaders.ContainsKey(moduleName))
175+
createNew = !symbolReaders.ContainsKey(moduleName);
176+
}
177+
178+
if (createNew)
179+
{
180+
var reader = SymbolReader.FromDatabase(path);
181+
182+
lock (symbolReaders)
161183
{
162-
symbolReaders[moduleName] = SymbolReader.FromDatabase(path);
184+
symbolReaders[moduleName] = reader;
163185
}
164186
}
165187
}

0 commit comments

Comments
 (0)