0
0
Fork 0
mirror of https://github.com/denoland/rusty_v8.git synced 2024-11-25 15:29:43 -05:00

v8: fix segfault during concurrent isolate creation/disposal on Windows (#829)

This patch includes a test for this issue.

The V8 patch is intentionally left simple to avoid merge conflicts in
the future. To be landed upstream, the `unwindinfo_use_count_` would
probably have to be made non-atomic and we'd have to add a cctest.

Upstream bug: https://bugs.chromium.org/p/v8/issues/detail?id=12393

Fixes: #714
This commit is contained in:
Bert Belder 2021-11-09 14:17:27 -08:00
parent 1d4be506be
commit c4c48f30b1
No known key found for this signature in database
GPG key ID: 7A77887B2E2ED461
2 changed files with 29 additions and 1 deletions

View file

@ -0,0 +1,28 @@
use std::iter::repeat_with;
use std::thread;
#[test]
fn concurrent_isolate_creation_and_disposal() {
let platform = v8::new_single_threaded_default_platform(false).make_shared();
v8::V8::initialize_platform(platform);
v8::V8::initialize();
for round in 0..1000 {
eprintln!("round {}", round);
let threads = repeat_with(|| {
thread::spawn(|| {
v8::Isolate::new(Default::default());
})
})
.take(16)
.collect::<Vec<_>>();
for join_handle in threads {
join_handle.join().unwrap();
}
}
unsafe { v8::V8::dispose() };
v8::V8::shutdown_platform();
}

2
v8

@ -1 +1 @@
Subproject commit 3049eb2bff7f8235b85d1759e55001c151a717d2
Subproject commit 67722327985937ee5fb5b40adab8de1c59b46e62