| // Copyright 2022 The Emscripten Authors. All rights reserved. | |
| // Emscripten is available under two separate licenses, the MIT license and the | |
| // University of Illinois/NCSA Open Source License. Both these licenses can be | |
| // found in the LICENSE file. | |
| // Test that when a thread aborts the whole application crashes | |
| // even when the main thread is blocking in pthread_join and | |
| // not returning the event loop. | |
| void* thread_start(void* arg) { | |
| puts("thread_start"); | |
| abort(); | |
| // Should never get here | |
| __builtin_trap(); | |
| return NULL; | |
| } | |
| int main() { | |
| puts("in main"); | |
| pthread_t t; | |
| pthread_create(&t, NULL, thread_start, NULL); | |
| puts("calling join"); | |
| pthread_join(t, NULL); | |
| // Should never get here | |
| __builtin_trap(); | |
| } | |