Rendered at 14:26:45 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
ReactiveJelly 40 minutes ago [-]
So a stronger type system in the boundary between Go and Linux would have caught this?
fn-mote 23 minutes ago [-]
My reading is that this is entirely Go’s fault. In Go, there was a union of two different types without metadata to distinguish the two. The disambiguation was done by looking to see if the data looked like a certain pointer.
I think the reason it is a problem only in 32 bit systems is that the assignment setting the lower half of the data is a 32 bit op, which can overflow the 16 bits used, but won’t affect the other half of a 64 bit value. (Corrections welcome.)
dlopes7 1 hours ago [-]
Very interesting read, these bugs that only happen after a lot of time in production are the worse to troubleshoot
DarmokTanagra 5 hours ago [-]
I wonder what other 32 bit bugs are waiting to be discovered.
BlackRabbit1 4 hours ago [-]
Not directly related to your embedded Go bug, but maybe helpful:
What really sky-rocketed my debugging skills in embedded devices was learning to utilize the Python plugin interface of 'gdb'.
I think the reason it is a problem only in 32 bit systems is that the assignment setting the lower half of the data is a 32 bit op, which can overflow the 16 bits used, but won’t affect the other half of a 64 bit value. (Corrections welcome.)
What really sky-rocketed my debugging skills in embedded devices was learning to utilize the Python plugin interface of 'gdb'.