In _thr_once, if init_routine fails with exception, the stack allocate
__cup will become invalid if unwinder walk back and free the stack of
thr_once. This cause cleanup linked list be dangling. In here, we give
the cleanup function a landing pad so that we td can correctly point
to previous cleanup function.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
Without unwinding, we actually calls no landing pad as in !_PTHREAD_FORCED_UNWIND case we assume that no landing pad happens. We can definiately add _PTHREAD_FORCED_UNWIND guard in here to save some bytes, but I think it is much clear now as a macro.