1. page_set_flags calls assert_memory_lock();
2. that is defined as tcg_debug_assert(have_mmap_lock())
3. That is just
25 static __thread int mmap_lock_count;
...
41 bool have_mmap_lock(void)
42 {
43 return mmap_lock_count > 0 ? true : false;
44 }
4. if that returns false then this will with the config qemu has for qemu-user-static turn into
242 do { if (!(X)) { __builtin_unreachable(); } } while (0)
That is our segfault.
So we are actually looking at a lack of an expected mmap lock.
We didn't mess with the locking or MM of qmeu-user-static.
The non-wrong linking should - if anything - in that regard only help.
The breakage is on:
1. page_set_flags calls assert_ memory_ lock(); assert( have_mmap_ lock()) lock(void) unreachable( ); } } while (0)
2. that is defined as tcg_debug_
3. That is just
25 static __thread int mmap_lock_count;
...
41 bool have_mmap_
42 {
43 return mmap_lock_count > 0 ? true : false;
44 }
4. if that returns false then this will with the config qemu has for qemu-user-static turn into
242 do { if (!(X)) { __builtin_
That is our segfault.
So we are actually looking at a lack of an expected mmap lock.
We didn't mess with the locking or MM of qmeu-user-static.
The non-wrong linking should - if anything - in that regard only help.