rts: stg_threadLabelzh returns 0 in a gcptr field
If a thread has no label, Cmm function `stg_threadLabelzh` returns `(0, 0)`, for an unboxed tuple of type `(# Int#, ByteArray# #)`. If the second field is seen by the gc, it crashes.
Instead we should return a "rubbish" value that is still a valid gc pointer (similar to what we do when we generate code for unused fields in unboxed sums)
MR coming up
issue