Sebastian Lackner sebastian@fds-team.de writes:
Based on the comment above only TEB->Win32ClientInfo should be used to store the struct user_thread_info. The padding got out of sync in cb3b7237925a24ba4c5696dd079fdc5d99a48577 where the 64-bit situation was ignored. The pshpack4 is required because the struct has a size of 31 ULONGs, and gcc will otherwise align the whole struct up to 8 bytes on 64-bit. I've confirmed manually with C_ASSERTs that the offsets/sizes are right and that it matches what we expect.
I don't see any need to change the packing, there's still enough room. I'd suggest to simply replace the padding with an assert on the structure size.