mirror of
https://github.com/denoland/rusty_v8.git
synced 2024-11-24 15:19:31 -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:
parent
1d4be506be
commit
c4c48f30b1
2 changed files with 29 additions and 1 deletions
28
tests/test_concurrent_isolate_creation_and_disposal.rs
Normal file
28
tests/test_concurrent_isolate_creation_and_disposal.rs
Normal 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
2
v8
|
@ -1 +1 @@
|
|||
Subproject commit 3049eb2bff7f8235b85d1759e55001c151a717d2
|
||||
Subproject commit 67722327985937ee5fb5b40adab8de1c59b46e62
|
Loading…
Reference in a new issue