Fixes IO lock initialization bug (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 14 May 2015 23:35:44 +0000 (19:35 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 15 May 2015 01:35:44 +0000 (21:35 -0400)
commitfa4385d12de5b47a584bc402956d5c58253bf27e
tree0a41598cdd24c455a68cd36e6e92ccb8f7b69efc
parent1c0d4682e2357d9c92f1a2ac11d5b6d1db941089
Fixes IO lock initialization bug (XCC)

Glibc IO locks were not initialized, but we were using IO locks.  This
showed up as page faults with lock_test or prov when trying to invoke
the argp_usage(), which internally calls _IO_flockfile.

The root issue was that some code was using the locks and some code
wasn't initializing, based on the inconsistent setting of _IO_MTSAFE_IO.

For a bit of Akaros history, check out commit e28dbef7c.  That commit
wasn't the correct fix at the time, but you can see how it's muddling in
the area.  It's likely that setting LIBC_REENTRANT was enough back then,
but now that we're on glibc-2.19, that was insufficient.  If you check
glibc's ChangeLog, there were a few things related to _IO_MTSAFE_IO
changed back in 2012, which was probably between our glibc versions.

Rebuild your toolchain (at least glibc) from scratch.
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/Makeconfig [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/Makefile
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/bits/stdio-lock.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/configure [deleted file]