Add basic reentrancy-checking support, and allow arena_new to reenter.
This checks whether or not we're reentrant using thread-local data, and, if we are, moves certain internal allocations to use arena 0 (which should be properly initialized after bootstrapping). The immediate thing this allows is spinning up threads in arena_new, which will enable spinning up background threads there.
This commit is contained in:
committed by
David Goldblatt
parent
0a0fcd3e6a
commit
b407a65401
@@ -351,7 +351,7 @@ TEST_END
|
||||
|
||||
int
|
||||
main(void) {
|
||||
return test(
|
||||
return test_no_reentrancy(
|
||||
test_stats_summary,
|
||||
test_stats_large,
|
||||
test_stats_arenas_summary,
|
||||
|
@@ -79,7 +79,6 @@ thd_start(void *arg) {
|
||||
}
|
||||
|
||||
TEST_BEGIN(test_tsd_main_thread) {
|
||||
test_skip_if(test_is_reentrant());
|
||||
thd_start((void *)(uintptr_t)0xa5f3e329);
|
||||
}
|
||||
TEST_END
|
||||
@@ -144,7 +143,7 @@ main(void) {
|
||||
data_tsd_boot();
|
||||
data_test_started = true;
|
||||
|
||||
return test(
|
||||
return test_no_reentrancy(
|
||||
test_tsd_main_thread,
|
||||
test_tsd_sub_thread,
|
||||
test_tsd_reincarnation);
|
||||
|
Reference in New Issue
Block a user