CI failure on some 32-bit targets in ServerSignal.terminate_handler_is_called_for_SIGTERM and others
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Fix Released
|
Medium
|
Stephen M. Webb | ||
mir (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Running CI on certain 32-bit Wily targets fails a slew of tests with valgrind errors similar to the below.
==30124== Syscall param futex(timeout) points to unaddressable byte(s)
==30124== at 0x46CA5A7: syscall (syscall.S:30)
==30124== by 0x44CD335: std::__
==30124== by 0x40C8076: _M_load_
==30124== by 0x40C8076: _M_load_and_test (atomic_
==30124== by 0x40C8076: _M_load_when_equal (atomic_
==30124== by 0x40C8076: wait (future:322)
==30124== by 0x40C8076: std::__
==30124== by 0x40C7111: mir::input:
==30124== by 0x40A4A30: mir::DisplaySer
==30124== by 0x40A104B: mir::run_
==30124== by 0x40B8C84: mir::Server::run() (server.cpp:405)
==30124== by 0x84A8279: operator() (async_
==30124== by 0x84A8279: _M_invoke<> (functional:1531)
==30124== by 0x84A8279: operator() (functional:1520)
==30124== by 0x84A8279: std::thread:
==30124== by 0x44CF7ED: ??? (in /usr/lib/
==30124== by 0x45CE1A9: start_thread (pthread_
==30124== by 0x46CEFDD: clone (clone.S:122)
==30124== Address 0x18 is not stack'd, malloc'd or (recently) free'd
The errors can be reproduced with hte following comand.
valgrind --error-exitcode=1 --trace-
It turns out the problem is code in libstdc++-v3 not passing all required parameters to a syscall() on a futex. We can probably assume the authors of that library know more about what they're doing with Linux kernel calls than we do, so I think adding a valgrind suppression for these errors should be all that's required to fix the CI failures.
Related branches
- Daniel van Vugt: Approve
- Andreas Pokorny (community): Approve
- PS Jenkins bot (community): Approve (continuous-integration)
- Alan Griffiths: Approve
-
Diff: 25 lines (+18/-0)1 file modifiedtools/valgrind_suppressions_generic (+18/-0)
Changed in mir: | |
milestone: | none → 0.18.0 |
Changed in mir: | |
status: | Fix Committed → Fix Released |
Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.18.0