[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: VLC on G5 crash : illegal instruction



On Sun, Mar 14, 2021 at 2:57 PM Riccardo Mottola
<riccardo.mottola@libero.it> wrote:
>
> On 3/8/21 9:49 AM, John Paul Adrian Glaubitz wrote:
> > We certainly shouldn't disable the whole JIT over a single instruction but rather
> > check whether this instruction can be guarded on older POWER systems.
> >
> > But we need to find out first which instruction triggers the SIGILL.
>
> Indeed, it crashes inside JIT, here the stacktrace:
>
> #0  0x00007fffe9c5fa30 in ?? ()
> #1  0x00007ffff02c406c in jit_machine_stack_exec
> (arguments=arguments@entry=0x7fffeb9a51d8,
>      executable_func=0x7fffe9c5fd00) at src/pcre2_jit_match.c:57
> #2  0x00007ffff02f3a38 in pcre2_jit_match_16 (code=0x7fffec4392a0,
> subject=0x100165218,
>      length=<optimized out>, start_offset=<optimized out>,
> options=<optimized out>,
>      match_data=0x7fffec3cd180, mcontext=<optimized out>) at
> src/pcre2_jit_match.c:168
> #3  0x00007ffff02f52b8 in pcre2_match_16 (code=0x7fffec4392a0,
> subject=0x100165218, length=37,
>      start_offset=0, options=0, match_data=0x7fffec3cd180,
> mcontext=0x1001782c0) at src/pcre2_match.c:6345
> #4  0x00007ffff0ad0240 in ?? () from
> /usr/lib/powerpc64-linux-gnu/libQt5Core.so.5
> #5  0x00007ffff0ad5a0c in ?? () from
> /usr/lib/powerpc64-linux-gnu/libQt5Core.so.5
> #6  0x00007ffff0ad5ffc in .QRegularExpression::match(QString const&,
> int, QRegularExpression::MatchType,
> QFlags<QRegularExpression::MatchOption>) const () from
> /usr/lib/powerpc64-linux-gnu/libQt5Core.so.5
> #7  0x00007ffff1ee41fc in ?? () from
> /usr/lib/powerpc64-linux-gnu/libQt5Widgets.so.5
> #8  0x00007ffff1ee4fec in ?? () from
> /usr/lib/powerpc64-linux-gnu/libQt5Widgets.so.5
> #9  0x00007ffff1eeb6cc in ?? () from
> /usr/lib/powerpc64-linux-gnu/libQt5Widgets.so.5
> #10 0x00007ffff0ce1618 in .QMetaCallEvent::placeMetaCall(QObject*) ()
>     from /usr/lib/powerpc64-linux-gnu/libQt5Core.so.5
> #11 0x00007ffff0ce7eec in .QObject::event(QEvent*) () from
> /usr/lib/powerpc64-linux-gnu/libQt5Core.so.5
> #12 0x00007ffff1eed8d8 in .QFileSystemModel::event(QEvent*) ()
>     from /usr/lib/powerpc64-linux-gnu/libQt5Widgets.so.5
> #13 0x00007ffff1beb5f4 in .QApplicationPrivate::notify_helper(QObject*,
> QEvent*) ()
>     from /usr/lib/powerpc64-linux-gnu/libQt5Widgets.so.5
> #14 0x00007ffff1bf5c24 in .QApplication::notify(QObject*, QEvent*) ()
>     from /usr/lib/powerpc64-linux-gnu/libQt5Widgets.so.5
> #15 0x00007ffff0ca26bc in .QCoreApplication::notifyInternal2(QObject*,
> QEvent*) ()
>     from /usr/lib/powerpc64-linux-gnu/libQt5Core.so.5
> #16 0x00007ffff0ca2a54 in .QCoreApplication::sendEvent(QObject*, QEvent*) ()
>     from /usr/lib/powerpc64-linux-gnu/libQt5Core.so.5
> #17 0x00007ffff0ca6e64 in
> .QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) ()
>     from /usr/lib/powerpc64-linux-gnu/libQt5Core.so.5
>
> (gdb) p local_stack
> $1 = {top = 0x7fffeb9a5158 "", end = 0x7fffeb9a5158 "", start =
> 0x7fffeb99d158 "",
>    min_start = 0x7fffeb99d158 ""}
>
> (gdb) p *arguments
> $3 = {stack = 0x7fffeb99d138, str = 0x100165218, begin = 0x100165218,
> end = 0x100165262,
>    match_data = 0x7fffec3cd180, startchar_ptr = 0x100165218, mark_ptr =
> 0x0, callout = 0x0,
>    callout_data = 0x0, offset_limit = 18446744073709551615, limit_match
> = 10000000, oveccount = 2,
>    options =

You probably need to go to frame 1 ('f 1' under gdb) and disassemble
('disass .' or 'disass' followed by a bunch of pages). That will show
the offending instruction.

Jeff


Reply to: