Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.18.0
** Changed in: mir Status: In Progress => Fix Committed -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to mir in Ubuntu. https://bugs.launchpad.net/bugs/1504579 Title: CI failure on some 32-bit targets in ServerSignal.terminate_handler_is_called_for_SIGTERM and others Status in Mir: Fix Committed Status in mir package in Ubuntu: New 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::__atomic_futex_unsigned_base::_M_futex_wait_until(unsigned int*, unsigned int, bool, std::chrono::duration<long long, std::ratio<1ll, 1ll> >, std::chrono::duration<long long, std::ratio<1ll, 1000000000ll> >) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.21) ==30124== by 0x40C8076: _M_load_and_test_until (atomic_futex.h:104) ==30124== by 0x40C8076: _M_load_and_test (atomic_futex.h:122) ==30124== by 0x40C8076: _M_load_when_equal (atomic_futex.h:162) ==30124== by 0x40C8076: wait (future:322) ==30124== by 0x40C8076: std::__basic_future<void>::wait() const (future:656) ==30124== by 0x40C7111: mir::input::DefaultInputManager::stop() (default_input_manager.cpp:139) ==30124== by 0x40A4A30: mir::DisplayServer::run() (display_server.cpp:205) ==30124== by 0x40A104B: mir::run_mir(mir::ServerConfiguration&, std::function<void (mir::DisplayServer&)>, std::function<void (int)> const&) (run_mir.cpp:110) ==30124== by 0x40B8C84: mir::Server::run() (server.cpp:405) ==30124== by 0x84A8279: operator() (async_server_runner.cpp:88) ==30124== by 0x84A8279: _M_invoke<> (functional:1531) ==30124== by 0x84A8279: operator() (functional:1520) ==30124== by 0x84A8279: std::thread::_Impl<std::_Bind_simple<mir_test_framework::AsyncServerRunner::start_server()::{lambda()#2} ()> >::_M_run() (thread:115) ==30124== by 0x44CF7ED: ??? (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.21) ==30124== by 0x45CE1A9: start_thread (pthread_create.c:333) ==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-children=yes --leak-check=full --show-leak-kinds=definite --errors-for-leak-kinds=definite --track- fds=yes --num-callers=128 --suppressions=tools/valgrind_suppressions_generic --suppressions=tools/valgrind_suppressions_glibc_2.21 obj-i686-linux- gnu/bin/mir_acceptance_tests --gtest_filter=ServerSignal.terminate_handler_is_called_for_SIGTERM 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. To manage notifications about this bug go to: https://bugs.launchpad.net/mir/+bug/1504579/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp