It's because `__emutls_get_address()` returns two distinct values in consecutive calls with the same descriptor in the same thread, so the second reference to the thread local `__gmpfr_default_fp_bit_precision` (defined in 'set_dfl_prec.c') gets a fresh object with its default value. #### Looks like emutls could not set the thread-specific value for 'foreign threads' (those not created by mcfgthread). Although this is by design, I do think the MPFR expectation should be reasonably supported. I will fix this in a couple of days.