Floating point context management flaw
There is a flaw in the floating point (FP) context management. The FP context is allocated from the workspace during thread creation and released during thread deletion. The pointer to the allocated memory is stored in TCB.Start.fp_context. The actual FP context used for save and restore is available via TCB.fp_context. A special feature _Context_Fp_start() allows to modify the FP context pointer during thread creation. Unfortunately this affects also TCB.Start.fp_context which is used to allocate and release the FP context area. This may lead to a workspace corruption. Proposed solution: Move the feature into the FP context initialization invoked during the thread load environment routine and remove _Context_Fp_start() completely. This is possible because _Context_Initialize_fp() passes a pointer to the FP context handle. The current _Context_Fp_start() is a NOP on all architectures with the exception of some m68k and ColdFire? variants.
Yes, this is still relevant.
The floating point context is not affected by the recent thread allocation changes since it is optional.