Skip to content

Commit

Permalink
fix: DebugStackTrace Android AssemblyReader init locking
Browse files Browse the repository at this point in the history
  • Loading branch information
vaind committed Dec 6, 2022
1 parent 48004cb commit e3b4a8f
Showing 1 changed file with 29 additions and 15 deletions.
44 changes: 29 additions & 15 deletions src/Sentry/Internal/DebugStackTrace.cs
Original file line number Diff line number Diff line change
Expand Up @@ -372,31 +372,45 @@ private static void DemangleLambdaReturnType(SentryStackFrame frame)
#if ANDROID
private IAndroidAssemblyReader? _assemblyReader;
private bool _assemblyReaderInitialized = false;
private object _assemblyReaderLock = new();

private void InitializeAssemblyReader()
{
if (_assemblyReaderInitialized)
{
return;
}
_assemblyReaderInitialized = true;

var apkPath = Environment.CommandLine;
if (!File.Exists(apkPath))
{
_options.LogWarning("Cannot create AssemblyReader: cannot read APK path from Environment.CommandLine={0}", apkPath);
return;
}
try
lock (_assemblyReaderLock)
{
// check again after acquiring the lock
if (_assemblyReaderInitialized)
{
return;
}

var apkPath = Environment.CommandLine;
try
{
if (!File.Exists(apkPath))
{
_options.DiagnosticLogger?.LogWarning("Cannot create AssemblyReader: cannot read APK path from Environment.CommandLine={0}", apkPath);
}
else
{
#pragma warning disable CS0618 // Type or member is obsolete
var supportedAbis = AndroidBuild.SupportedAbis ?? new List<string> { AndroidBuild.CpuAbi ?? "" };
var supportedAbis = AndroidBuild.SupportedAbis ?? new List<string> { AndroidBuild.CpuAbi ?? "" };
#pragma warning restore CS0618 // Type or member is obsolete
_assemblyReader = AndroidAssemblyReaderFactory.Open(apkPath, supportedAbis, _options.DiagnosticLogger);
}
catch (Exception e)
{
_options.LogWarning("Cannot create AssemblyReader: {0}", e.Message);
_assemblyReader = AndroidAssemblyReaderFactory.Open(apkPath, supportedAbis, _options.DiagnosticLogger);
}
}
catch (Exception e)
{
_options.DiagnosticLogger?.LogError("Cannot create AssemblyReader: {0}", e);
}
finally
{
_assemblyReaderInitialized = true;
}
}
}
#endif
Expand Down

0 comments on commit e3b4a8f

Please sign in to comment.