Looking for Missed Alarm Bugs in a Formal Verification Tool
-
[This piece is co-authored with Vsevolod Livinskii.] Formal verification
isn’t some sort of magic pixie dust that we sprinkle over a computer system
to mak...
2 months ago
When I supported the GNU compilers at Wind River, D'Anne Thompson made it clear that all global variables (both those visible to the linker and those visible throughout a source file) are volatile by *default*.
ReplyDeleteThis is because all the code in VxWorks (before version 6) is in the same address space. Every thread, driver, interrupt handler, etc. This means that between the time a function loads up a global variable and the time it trefers to it again, another thread (running code in another module or other code in the same module) may have changed it.
This situation is exactly why the keyword 'volatile' was invented.
It requires a lot of discipline to minimize or eliminate global or non-static variables from your code,
and it's worth it.