Skip to content

Commit 6574f23

Browse files
authored
Fix dispose deadlock (#339)
1 parent 4f76a82 commit 6574f23

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

lib/PuppeteerSharp/Launcher.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public class Launcher
5454
private TaskCompletionSource<bool> _waitForChromeToClose;
5555
private bool _processLoaded;
5656
private bool _chromiumLaunched;
57+
private object _isChromeCloseLock = new object();
5758
#endregion
5859

5960
#region Properties
@@ -389,18 +390,19 @@ private void CleanUp()
389390

390391
private async Task AfterProcessExit()
391392
{
392-
if (IsChromeClosed)
393+
lock (_isChromeCloseLock)
393394
{
394-
return;
395+
if (IsChromeClosed)
396+
{
397+
return;
398+
}
399+
IsChromeClosed = true;
395400
}
396-
397401
if (_options.LogProcess)
398402
{
399403
_logger.LogInformation("Process Count: {ProcessCount}", Interlocked.Decrement(ref _processCount));
400404
}
401405

402-
IsChromeClosed = true;
403-
404406
if (_temporaryUserDataDir != null)
405407
{
406408
await TryDeleteUserDataDir();
@@ -417,6 +419,7 @@ private async Task KillChrome()
417419
if (!string.IsNullOrEmpty(_temporaryUserDataDir))
418420
{
419421
ForceKillChrome();
422+
await AfterProcessExit();
420423
}
421424
else if (_connection != null)
422425
{

lib/PuppeteerSharp/PuppeteerSharp.csproj

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<PropertyGroup>
33
<TargetFramework>netstandard2.0</TargetFramework>
44
<PackOnBuild>true</PackOnBuild>
5-
<PackageVersion>1.0.1</PackageVersion>
5+
<PackageVersion>1.0.2</PackageVersion>
66
<Authors>Darío Kondratiuk</Authors>
77
<Owners>Darío Kondratiuk</Owners>
88
<PackageProjectUrl>https://github.com/kblok/puppeteer-sharp</PackageProjectUrl>
@@ -12,6 +12,9 @@
1212
<Description>Headless Chrome .NET API</Description>
1313
<PackageId>PuppeteerSharp</PackageId>
1414
<PackageReleaseNotes>
15+
1.0.2
16+
==============
17+
* Fix Dispose deadlocks on ASP.NET MVC
1518
1.0.1
1619
==============
1720
* Fix Chromium downloader on 32bits apps runnning on a x64 platform
@@ -60,7 +63,7 @@
6063
* PuppeteerSharp.DeviceDescriptors => PuppeteerSharp.Mobile.DeviceDescriptors
6164
* PuppeteerSharp.DeviceDescriptorName => PuppeteerSharp.Mobile.DeviceDescriptorName
6265
</PackageReleaseNotes>
63-
<ReleaseVersion>1.0.1</ReleaseVersion>
66+
<ReleaseVersion>1.0.2</ReleaseVersion>
6467
<SynchReleaseVersion>false</SynchReleaseVersion>
6568
</PropertyGroup>
6669
<PropertyGroup>

0 commit comments

Comments
 (0)