touch-packages team mailing list archive
-
touch-packages team
-
Mailing list archive
-
Message #125539
[Bug 1504579] Re: CI failure on some 32-bit targets in ServerSignal.terminate_handler_is_called_for_SIGTERM and others
** Changed in: mir
Status: Fix Committed => Fix Released
--
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 Released
Status in mir package in Ubuntu:
Fix Released
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