aarch64 jackd2 fails on startup with Unhandled fault: alignment fault (0x92000021)

Bug #1586200 reported by Brad
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
jackd2 (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

jackd2 (1.9.10+20150825git1ed50c92~dfsg-1ubuntu1) fails to start on the aarch64 architecture (Xenial) with an alignment error such as..

Unhandled fault: alignment fault (0x92000021) at 0x0000007fa519708e

Using...
lsb_release -rd
Description: Ubuntu 16.04 LTS
Release: 16.04

An upstream fix is available for aarch64 using the same method as for arm and powerpc by working around packed structure issues...

https://github.com/jackaudio/jack2/commit/693451c36106542c5c5b5ba46d5d89aec783252e

The issue also impacts the aarch64 libjackd libraries (libjack-jackd2-0), and any client package compiled against the bugged library will have a broken shared memory structure for aarch64. Examples include qjackctl, ardour, guitarix, etc.

Is it possible to request a new pull from upstream or have the patch listed above applied to Ubuntu? Please let me know if this is not the appropriate place to request this or if more information is needed.

Best Regards,

Brad.

PS. A debug of a crash...

JACK server starting in realtime mode with priority 10
self-connect-mode is "Don't restrict self connect requests"
[New Thread 0x7fb1f631e0 (LWP 8369)]

Thread 1 "jackd" received signal SIGBUS, Bus error.
0x0000007fb7f41cc4 in Jack::JackGraphManager::InitRefNum(int) () from /usr/lib/aarch64-linux-gnu/libjackserver.so.0
(gdb) bt full
#0 0x0000007fb7f41cc4 in Jack::JackGraphManager::InitRefNum(int) () from /usr/lib/aarch64-linux-gnu/libjackserver.so.0
No symbol table info available.
#1 0x0000007fb7f5f5cc in Jack::JackEngine::ClientInternalOpen(char const*, int*, Jack::JackEngineControl**, Jack::JackGraphManager**, Jack::JackClientInterface*, bool) ()
   from /usr/lib/aarch64-linux-gnu/libjackserver.so.0
No symbol table info available.
#2 0x0000007fb7f5be68 in Jack::JackDriver::Open(unsigned int, unsigned int, bool, bool, int, int, bool, char const*, char const*, unsigned int, unsigned int) ()
   from /usr/lib/aarch64-linux-gnu/libjackserver.so.0
No symbol table info available.
#3 0x0000007fb7b02608 in driver_initialize () from /usr/lib/aarch64-linux-gnu/jack/jack_dummy.so
No symbol table info available.
#4 0x0000007fb7f6853c in JackDriverInfo::Open(jack_driver_desc_t*, Jack::JackLockedEngine*, Jack::JackPosixSemaphore*, _JSList const*) () from /usr/lib/aarch64-linux-gnu/libjackserver.so.0
No symbol table info available.
#5 0x0000007fb7f64d9c in Jack::JackServer::Open(jack_driver_desc_t*, _JSList*) () from /usr/lib/aarch64-linux-gnu/libjackserver.so.0
No symbol table info available.
#6 0x0000007fb7f6be50 in jackctl_server_open () from /usr/lib/aarch64-linux-gnu/libjackserver.so.0
No symbol table info available.
#7 0x0000000000402d8c in main (argc=3, argv=0x7fffffef08) at ../common/Jackdmp.cpp:545
        server_ctl = 0x4298f0
        server_parameters = 0x42a570
        server_name = 0x4041e0 "default"
        master_driver_ctl = 0x435a10
        loopback_driver_ctl = 0x0
        replace_registry = 0
        options = 0x4041e8 "-d:X:I:P:uvshVrRL:STFl:t:mn:p:a:c:"
        long_options = {{name = 0x404210 "clock-source", has_arg = 1, flag = 0x0, val = 99}, {name = 0x404220 "loopback-driver", has_arg = 1, flag = 0x0, val = 76}, {name = 0x404230 "audio-driver",
            has_arg = 1, flag = 0x0, val = 100}, {name = 0x404240 "midi-driver", has_arg = 1, flag = 0x0, val = 88}, {name = 0x404250 "internal-client", has_arg = 1, flag = 0x0, val = 73}, {
            name = 0x404260 "verbose", has_arg = 0, flag = 0x0, val = 118}, {name = 0x404268 "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x404270 "port-max", has_arg = 1, flag = 0x0, val = 112}, {
            name = 0x404280 "no-mlock", has_arg = 0, flag = 0x0, val = 109}, {name = 0x404290 "name", has_arg = 1, flag = 0x0, val = 110}, {name = 0x404298 "unlock", has_arg = 0, flag = 0x0, val = 117}, {
            name = 0x4042a0 "realtime", has_arg = 0, flag = 0x0, val = 82}, {name = 0x4042b0 "no-realtime", has_arg = 0, flag = 0x0, val = 114}, {name = 0x4042c0 "replace-registry", has_arg = 0,
            flag = 0x7fffffe968, val = 0}, {name = 0x4042d8 "loopback", has_arg = 0, flag = 0x0, val = 76}, {name = 0x4042e8 "realtime-priority", has_arg = 1, flag = 0x0, val = 80}, {name = 0x404300 "timeout",
            has_arg = 1, flag = 0x0, val = 116}, {name = 0x404308 "temporary", has_arg = 0, flag = 0x0, val = 84}, {name = 0x404318 "version", has_arg = 0, flag = 0x0, val = 86}, {name = 0x404320 "silent",
            has_arg = 0, flag = 0x0, val = 115}, {name = 0x404328 "sync", has_arg = 0, flag = 0x0, val = 83}, {name = 0x404330 "autoconnect", has_arg = 1, flag = 0x0, val = 97}, {name = 0x0, has_arg = 0,
            flag = 0x0, val = 0}}
        i = 1
        opt = 100
        option_index = 0
        master_driver_name = 0x7ffffff2ae "dummy"
        master_driver_args = 0x435020
        master_driver_nargs = 1
        loopback = 0
        show_version = false
        sigmask = 0x7fb7fb3020
        param = 0x42b0b0
        value = {ui = 0, i = 0, c = 0 '\000',
          str = "\000\000\000\000\000\000\000\000\220\001\000\270\177\000\000\000\300\353\377\377\177\000\000\000h\354\377\377\177\000\000\000\320\353\377\377\177\000\000\000\363\026\346\365\000\000\000\000\n\000\000\000\000\000\000\000\004", '\000' <repeats 11 times>, "\177\000\000\000\070q\377\267\177\000\000\000\300\353\377\377\177\000\000\000\b\353\377\377\177\000\000\000\004\353\377\377\177\000\000\000`\n@\000\000\000\000\000\320q\377\267\177\000\000\000\020i·\177\000\000", b = false}
        internals_list = {<std::__cxx11::_List_base<char*, std::allocator<char*> >> = {
            _M_impl = {<std::allocator<std::_List_node<char*> >> = {<__gnu_cxx::new_allocator<std::_List_node<char*> >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {
                  _M_next = 0x7fffffea28, _M_prev = 0x7fffffea28}, _M_data = 0}}}, <No data fields>}
        slaves_list = {<std::__cxx11::_List_base<char*, std::allocator<char*> >> = {
            _M_impl = {<std::allocator<std::_List_node<char*> >> = {<__gnu_cxx::new_allocator<std::_List_node<char*> >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {
                  _M_next = 0x7fffffea40, _M_prev = 0x7fffffea40}, _M_data = 0}}}, <No data fields>}
        it = <error reading variable it (Cannot access memory at address 0x10)>
        return_value = -1
        notify_sent = false

Brad (bjharper)
description: updated
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in jackd2 (Ubuntu):
status: New → Confirmed
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.