work around "signal loses thread pointer" issue with "approach 2"