No dump from x86 Android

303 views
Skip to first unread message

Antti Mattila

unread,
Mar 27, 2017, 6:39:55 AM3/27/17
to google-breakpad-discuss
I successfully get crash dumps with arm based devices, but running simple test app on x86 device does not generate crash dump. 

Registering crash handler like this:

        google_breakpad::MinidumpDescriptor descriptor(path);
        exceptionHandler = new google_breakpad::ExceptionHandler(descriptor, NULL, DumpCallback, NULL, false, -1);

but DumpCallback function is never called on x86 systems. Tried three different devices and simulator.  

Is this known issue, or does x86 require something special on Android?

Antti Mattila

unread,
Mar 28, 2017, 2:31:57 AM3/28/17
to google-breakpad-discuss
To add couple of details. Api level is set to 15. Using latest NDK. 

This also happens with sample_app bundled with the project. Easy to replicate.

Antti Mattila

unread,
Mar 28, 2017, 6:18:46 AM3/28/17
to google-breakpad-discuss
Also, when running this 

exceptionHandler->SimulateSignalDelivery(1);

with debugger, it seems to crash to sys_mmap call.

maanantai 27. maaliskuuta 2017 13.39.55 UTC+3 Antti Mattila kirjoitti:

Jay Soffian

unread,
Apr 30, 2018, 10:05:48 PM4/30/18
to google-brea...@googlegroups.com
Replying to a year-old message since I just came across this issue. 

LSS seems to not work properly when compiled for x86 with clang under Android. It segfaults on some calls. So far both sys_prctl and sys_mmap fail. Android NDK 16.1.4479499.

If I compile with gcc (NDK_TOOLCHAIN_VERSION := 4.9) it works as expected. I’m testing under the emulator, but it repros with a few different Android versions.

Current breakpad which is using this LSS revision:


--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-discuss+unsub...@googlegroups.com.
To post to this group, send email to google-breakpad-discuss@googlegroups.com.
Visit this group at https://groups.google.com/group/google-breakpad-discuss.
For more options, visit https://groups.google.com/d/optout.

Mike Frysinger

unread,
May 1, 2018, 5:12:12 AM5/1/18
to google-brea...@googlegroups.com
is it actually segfaulting ?  or is it a different signal that is killing it ?
is there anything in the logs or kernel buffer ?

newer Android is using seccomp filters, so i'm wondering if it's tripping that.
-mike

On Tue, May 1, 2018 at 11:05 AM Jay Soffian <jayso...@gmail.com> wrote:
Replying to a year-old message since I just came across this issue. 

LSS seems to not work properly when compiled for x86 with clang under Android. It segfaults on some calls. So far both sys_prctl and sys_mmap fail. Android NDK 16.1.4479499.

If I compile with gcc (NDK_TOOLCHAIN_VERSION := 4.9) it works as expected. I’m testing under the emulator, but it repros with a few different Android versions.

Current breakpad which is using this LSS revision:

On Tue, Mar 28, 2017 at 6:18 AM, Antti Mattila <antti....@gmail.com> wrote:
Also, when running this 

exceptionHandler->SimulateSignalDelivery(1);

with debugger, it seems to crash to sys_mmap call.

maanantai 27. maaliskuuta 2017 13.39.55 UTC+3 Antti Mattila kirjoitti:
I successfully get crash dumps with arm based devices, but running simple test app on x86 device does not generate crash dump. 

Registering crash handler like this:

        google_breakpad::MinidumpDescriptor descriptor(path);
        exceptionHandler = new google_breakpad::ExceptionHandler(descriptor, NULL, DumpCallback, NULL, false, -1);

but DumpCallback function is never called on x86 systems. Tried three different devices and simulator.  

Is this known issue, or does x86 require something special on Android?

--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-d...@googlegroups.com.
To post to this group, send email to google-brea...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-d...@googlegroups.com.
To post to this group, send email to google-brea...@googlegroups.com.

Jay Soffian

unread,
May 1, 2018, 11:03:17 AM5/1/18
to google-brea...@googlegroups.com
It’s actually segfaulting, yes, at least according to logcat. I don’t think it’s seccomp because I’m testing with emulators based on API 19 and API 21. Also, the issue occurs when compiled with clang, but not with gcc, so I’m not sure how seccomp would come into play with one of those but not the other. Also, the same code works on arm/arm64 devices at various API levels, including the API levels where it’s failing on x86.

I’’ve tried both abort() and SimulateSignalDelivery() to trigger the handler. logcat -v time -b all -s ‘*:v’ looks like:

05-01 14:51:42.464 W/google-breakpad( 9938): PR_SET_DUMPABLE
05-01 14:51:42.464 W/AudioTrack( 1501): AUDIO_OUTPUT_FLAG_FAST denied by client
05-01 14:51:42.473 I/WindowState( 1501): WIN DEATH: Window{d1e2787 u0 …demo.DemoActivity}
05-01 14:51:42.474 W/libprocessgroup( 1501): failed to open /acct/uid_10083/pid_9938/cgroup.procs: No such file or directory
05-01 14:51:42.474 I/ActivityManager( 1501): Process …demo (pid 9938) has died
05-01 14:51:42.476 W/ActivityManager( 1501): Force removing ActivityRecord{cafb3b5 u0 …demo/.DemoActivity t37}: app died, no saved state
05-01 14:51:42.477 I/Zygote  ( 1152): Process 9938 exited due to signal (11)

I added a logging call just before sys_prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) is called inside ExceptionHandler::HandleSignal. That’s the PR_SET_DUMPABLE line. The logging call immediately after it does not appear, so the segfault occurs during the sys_prctl call. If I switch that line to call prctl directly, then the segfault occurs when sys_mmap is called by the PageAllocator.

That’s on a Nexus_5X_API_21 avd. 

j.

To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-discuss+unsub...@googlegroups.com.
To post to this group, send email to google-breakpad-discuss@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-discuss+unsub...@googlegroups.com.
To post to this group, send email to google-breakpad-discuss@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-discuss+unsub...@googlegroups.com.
To post to this group, send email to google-breakpad-discuss@googlegroups.com.

Jay Soffian

unread,
May 1, 2018, 11:42:19 AM5/1/18
to google-brea...@googlegroups.com
Don’t know if this helps any but when I trigger the handler via SimulateSignalDeliver(SIGABRT) and with lldb attached:

- sys_prctl crashes with a fault address of 0x1c.
- sys_mmap crashes with a fault address of 0x3e.

j.

To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-discuss+unsubscr...@googlegroups.com.

To post to this group, send email to google-breakpad-discuss@googlegroups.com.
Visit this group at https://groups.google.com/group/google-breakpad-discuss.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-discuss+unsubscr...@googlegroups.com.

To post to this group, send email to google-breakpad-discuss@googlegroups.com.
Visit this group at https://groups.google.com/group/google-breakpad-discuss.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-discuss+unsubscr...@googlegroups.com.

Jay Soffian

unread,
May 1, 2018, 1:54:43 PM5/1/18
to google-brea...@googlegroups.com
More info. Learning as I go here ( I haven’t written assembly in a couple decades and it was 68000 then…). This is as compiled by clang.. 

(lldb) dis
libcrashmanager.so`sys_prctl:
    0xa65e3db0 <+0>:   pushl  %ebp
    0xa65e3db1 <+1>:   movl   %esp, %ebp
    0xa65e3db3 <+3>:   pushl  %ebx
    0xa65e3db4 <+4>:   pushl  %edi
    0xa65e3db5 <+5>:   pushl  %esi
    0xa65e3db6 <+6>:   andl   $-0x10, %esp
    0xa65e3db9 <+9>:   subl   $0x40, %esp
    0xa65e3dbc <+12>:  movl   %esp, %esi
    0xa65e3dbe <+14>:  calll  0xa65e3dc3                ; <+19> at linux_syscall_support.h:3479
    0xa65e3dc3 <+19>:  popl   %eax
    0xa65e3dc4 <+20>:  addl   $0x8c109, %eax            ; imm = 0x8C109 
    0xa65e3dca <+26>:  movl   0x18(%ebp), %ecx
    0xa65e3dcd <+29>:  movl   0x14(%ebp), %edx
    0xa65e3dd0 <+32>:  movl   0x10(%ebp), %edi
    0xa65e3dd3 <+35>:  movl   0xc(%ebp), %ebx
    0xa65e3dd6 <+38>:  movl   %eax, 0x34(%esi)
    0xa65e3dd9 <+41>:  movl   0x8(%ebp), %eax
    0xa65e3ddc <+44>:  movl   %eax, 0x30(%esi)
    0xa65e3ddf <+47>:  movl   0x8(%ebp), %eax
    0xa65e3de2 <+50>:  movl   %eax, 0x2c(%esi)
    0xa65e3de5 <+53>:  movl   0xc(%ebp), %eax
    0xa65e3de8 <+56>:  movl   %eax, 0x28(%esi)
    0xa65e3deb <+59>:  movl   0x10(%ebp), %eax
    0xa65e3dee <+62>:  movl   %eax, 0x24(%esi)
    0xa65e3df1 <+65>:  movl   0x14(%ebp), %eax
    0xa65e3df4 <+68>:  movl   %eax, 0x20(%esi)
    0xa65e3df7 <+71>:  movl   0x18(%ebp), %eax
    0xa65e3dfa <+74>:  movl   %eax, 0x1c(%esi)
    0xa65e3dfd <+77>:  movl   0x2c(%esi), %eax
    0xa65e3e00 <+80>:  movl   %eax, 0x18(%esi)
    0xa65e3e03 <+83>:  movl   0x28(%esi), %eax
    0xa65e3e06 <+86>:  movl   %ecx, 0x14(%esi)
    0xa65e3e09 <+89>:  movl   %eax, %ecx
    0xa65e3e0b <+91>:  movl   0x24(%esi), %eax
    0xa65e3e0e <+94>:  movl   %edx, 0x10(%esi)
    0xa65e3e11 <+97>:  movl   %eax, %edx
    0xa65e3e13 <+99>:  movl   0x20(%esi), %eax
    0xa65e3e16 <+102>: movl   %eax, %esi
->  0xa65e3e18 <+104>: movl   0x1c(%esi), %eax
    0xa65e3e1b <+107>: movl   %edi, 0xc(%esi)
    0xa65e3e1e <+110>: movl   %eax, %edi
    0xa65e3e20 <+112>: movl   0x18(%esi), %eax
    0xa65e3e23 <+115>: pushl  %ebx
    0xa65e3e24 <+116>: movl   %eax, %ebx
    0xa65e3e26 <+118>: movl   $0xac, %eax
    0xa65e3e2b <+123>: int    $0x80
    0xa65e3e2d <+125>: popl   %ebx
    0xa65e3e2e <+126>: movl   %eax, 0x38(%esi)
    0xa65e3e31 <+129>: movl   %ebx, 0x8(%esi)
    0xa65e3e34 <+132>: cmpl   $0xfffff001, 0x38(%esi)   ; imm = 0xFFFFF001 
    0xa65e3e3b <+139>: jb     0xa65e3e5d                ; <+173> at linux_syscall_support.h:3479
    0xa65e3e41 <+145>: xorl   %eax, %eax
    0xa65e3e43 <+147>: subl   0x38(%esi), %eax
    0xa65e3e46 <+150>: movl   0x34(%esi), %ebx
    0xa65e3e49 <+153>: movl   %eax, 0x4(%esi)
    0xa65e3e4c <+156>: calll  0xa65d9980                ; symbol stub for: __errno
    0xa65e3e51 <+161>: movl   0x4(%esi), %ebx
    0xa65e3e54 <+164>: movl   %ebx, (%eax)
    0xa65e3e56 <+166>: movl   $0xffffffff, 0x38(%esi)   ; imm = 0xFFFFFFFF 
    0xa65e3e5d <+173>: movl   0x38(%esi), %eax
    0xa65e3e60 <+176>: leal   -0xc(%ebp), %esp
    0xa65e3e63 <+179>: popl   %esi
    0xa65e3e64 <+180>: popl   %edi
    0xa65e3e65 <+181>: popl   %ebx
    0xa65e3e66 <+182>: popl   %ebp
    0xa65e3e67 <+183>: retl   
(lldb) register read
General Purpose Registers:
       eax = 0x00000000
       ebx = 0x00000001
       ecx = 0x00000001
       edx = 0x00000000
       edi = 0x00000000
       esi = 0x00000000
       ebp = 0xbf93e668
       esp = 0xbf93e610
       eip = 0xa65e3e18  libcrashmanager.so`sys_prctl(int, unsigned long, unsigned long, unsigned long, unsigned long) + 104 at linux_syscall_support.h:3479
    eflags = 0x00010286
        cs = 0x00000073
        fs = 0x0000003b
        gs = 0x00000033
        ss = 0x0000007b
        ds = 0x0000007b
        es = 0x0000007b

So esi being 0 is a problem obviously, but I’m having trouble following the register gymnastics leading up to it, which I guess are trying to setup the call properly.

j. 

Jay Soffian

unread,
May 1, 2018, 8:04:27 PM5/1/18
to google-brea...@googlegroups.com
Tracing through this assembly, you can see that the movl at offset +102 is what’s clobbering %esi. If you further trace back, the source of that value is argument 4 to the sys_prctl call. Indeed, if I change the call to: 

  sys_prctl(PR_SET_DUMPABLE, 1, 0, 0xee, 0);

Then %esi ends up with 0xee loaded in it. AFAIU, all the assembly before offset +115 is being generated by clang. The inline assembly in linux_syscall_support.h for _syscall5 begins with the “pushl %ebx” at offset +115.

So the question is, why is clang generating assembly which is clobbering %esi with an argument?

I’m at a bit of a loss here… this is definitely outside my $dayjob wheelhouse.

Also, how come Chromium hasn’t been bitten by this?

j.

Mike Frysinger

unread,
May 2, 2018, 3:09:42 AM5/2/18
to google-brea...@googlegroups.com
thanks for doing all of this.

what version of clang is in that toolchain ?

i've written a bunch of LSS unittests and they're all passing w/clang-5.0.  i had mmap tests, but no prctl, but i've added those now too and they pass.  however, i'm not building/running under Android.  you can check them here:

here's a simple test file that should make it easier to check the generated asm.  normally the extra args to prctl should be set to 0, but i think in the GET_DUMPABLE case they get safely ignored, and it'll help with debugging the generated asm.
$ cat test.c
#include "linux_syscall_support.h"
int main() {
  return sys_prctl(PR_GET_DUMPABLE, 11, 22, 33, 44);
}
$ clang test.c
$ ./a.out; echo $?
1

$ clang -S -o - test.c -O3
        .text
        .file   "test.c"
        .globl  main                    # -- Begin function main
        .p2align        4, 0x90
        .type   main,@function
main:                                   # @main
        .cfi_startproc
# BB#0:
        pushq   %rbx
.Lcfi0:
        .cfi_def_cfa_offset 16
.Lcfi1:
        .cfi_offset %rbx, -16
        movl    $33, %r9d    # arg4
        movl    $44, %ebx    # arg5
        movl    $3, %edi    # PR_GET_DUMPABLE
        movl    $11, %esi    # arg2
        movl    $22, %edx   # arg3
        movl    $157, %eax    # SYS_prctl
        #APP
        movq    %r9, %r10
        movq    %rbx, %r8
        syscall

        #NO_APP
        movq    %rax, %rbx
        cmpq    $-4095, %rbx            # imm = 0xF001
        jb      .LBB0_2
# BB#1:
        negl    %ebx
        callq   __errno_location
        movl    %ebx, (%rax)
        movq    $-1, %rbx
.LBB0_2:
        movl    %ebx, %eax
        popq    %rbx
        retq
.Lfunc_end0:
        .size   main, .Lfunc_end0-main
        .cfi_endproc
                                        # -- End function
-mike

--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-d...@googlegroups.com.
To post to this group, send email to google-brea...@googlegroups.com.

Jay Soffian

unread,
May 2, 2018, 1:17:55 PM5/2/18
to google-brea...@googlegroups.com
If I compile with:

/Applications/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang -gcc-toolchain /Applications/android-ndk-r16b/toolchains/x86-4.9/prebuilt/darwin-x86_64 -target i686-none-linux-android --sysroot /Applications/android-ndk-r16b/sysroot -isystem /Applications/android-ndk-r16b/sysroot/usr/include/i686-linux-android -S -o - test_lss.c -O3

.text
.file "test_lss.c"
.globl main
.p2align 4, 0x90
.type main,@function
main:                                   # @main
# BB#0:
pushl %ebp
movl %esp, %ebp
pushl %ebx
pushl %edi
pushl %esi
subl $12, %esp
calll .L0$pb
.L0$pb:
popl %ebx
.Ltmp0:
addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp0-.L0$pb), %ebx
movl $11, %ecx
movl $22, %edx
movl $33, %esi
movl $44, %edi
#APP
pushl %ebx
movl $3, %ebx
movl $172, %eax
int $128
popl %ebx
#NO_APP
movl %eax, %esi
cmpl $-4095, %esi            # imm = 0xF001
jb .LBB0_2
# BB#1:
negl %esi
calll __errno@PLT
movl %esi, (%eax)
movl $-1, %esi
.LBB0_2:
movl %esi, %eax
addl $12, %esp
popl %esi
popl %edi
popl %ebx
popl %ebp
retl
.Lfunc_end0:
.size main, .Lfunc_end0-main


.ident "Android clang version 5.0.300080  (based on LLVM 5.0.300080)"
.section ".note.GNU-stack","",@progbits

That looks sane to me. If I switch to -O0:

sys_prctl:                              # @sys_prctl
# BB#0:
pushl %ebp
movl %esp, %ebp
pushl %ebx
pushl %edi
pushl %esi
subl $60, %esp
calll .L1$pb
.L1$pb:
popl %eax
.Ltmp1:
addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp1-.L1$pb), %eax
movl 24(%ebp), %ecx
movl 20(%ebp), %edx
movl 16(%ebp), %esi
movl 12(%ebp), %edi
movl 8(%ebp), %ebx
movl %eax, -20(%ebp)         # 4-byte Spill
movl 8(%ebp), %eax
movl %eax, -24(%ebp)         # 4-byte Spill
movl 12(%ebp), %eax
movl %eax, -28(%ebp)         # 4-byte Spill
movl 16(%ebp), %eax
movl %eax, -32(%ebp)         # 4-byte Spill
movl 20(%ebp), %eax
movl %eax, -36(%ebp)         # 4-byte Spill
movl 24(%ebp), %eax
movl %eax, -40(%ebp)         # 4-byte Spill
movl -24(%ebp), %eax         # 4-byte Reload
movl %eax, -44(%ebp)         # 4-byte Spill
movl -28(%ebp), %eax         # 4-byte Reload
movl %ecx, -48(%ebp)         # 4-byte Spill
movl %eax, %ecx
movl -32(%ebp), %eax         # 4-byte Reload
movl %edx, -52(%ebp)         # 4-byte Spill
movl %eax, %edx
movl -36(%ebp), %eax         # 4-byte Reload
movl %esi, -56(%ebp)         # 4-byte Spill
movl %eax, %esi
movl -40(%ebp), %eax         # 4-byte Reload
movl %edi, -60(%ebp)         # 4-byte Spill
movl %eax, %edi
movl -44(%ebp), %eax         # 4-byte Reload
#APP
pushl %ebx
movl %eax, %ebx
movl $172, %eax
int $128
popl %ebx
#NO_APP
movl %eax, -16(%ebp)
movl %ebx, -64(%ebp)         # 4-byte Spill


But check out what happens when I add -mstackrealign:

sys_prctl:                              # @sys_prctl
# BB#0:
pushl %ebp
movl %esp, %ebp
pushl %ebx
pushl %edi
pushl %esi
andl $-16, %esp
subl $64, %esp
movl %esp, %esi
calll .L1$pb
.L1$pb:
popl %eax
.Ltmp1:
addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp1-.L1$pb), %eax
movl 24(%ebp), %ecx
movl 20(%ebp), %edx
movl 16(%ebp), %edi
movl 12(%ebp), %ebx
movl %eax, 52(%esi)          # 4-byte Spill
movl 8(%ebp), %eax
movl %eax, 48(%esi)          # 4-byte Spill
movl 8(%ebp), %eax
movl %eax, 44(%esi)          # 4-byte Spill
movl 12(%ebp), %eax
movl %eax, 40(%esi)          # 4-byte Spill
movl 16(%ebp), %eax
movl %eax, 36(%esi)          # 4-byte Spill
movl 20(%ebp), %eax
movl %eax, 32(%esi)          # 4-byte Spill
movl 24(%ebp), %eax
movl %eax, 28(%esi)          # 4-byte Spill
movl 44(%esi), %eax          # 4-byte Reload
movl %eax, 24(%esi)          # 4-byte Spill
movl 40(%esi), %eax          # 4-byte Reload
movl %ecx, 20(%esi)          # 4-byte Spill
movl %eax, %ecx
movl 36(%esi), %eax          # 4-byte Reload
movl %edx, 16(%esi)          # 4-byte Spill
movl %eax, %edx
movl 32(%esi), %eax          # 4-byte Reload
movl %eax, %esi
movl 28(%esi), %eax          # 4-byte Reload
movl %edi, 12(%esi)          # 4-byte Spill
movl %eax, %edi
movl 24(%esi), %eax          # 4-byte Reload
#APP
pushl %ebx
movl %eax, %ebx
movl $172, %eax
int $128
popl %ebx
#NO_APP
movl %eax, 56(%esi)
movl %ebx, 8(%esi)           # 4-byte Spill


That looks to me like it clobbers %esi.

In any case, it's _not_ reproducing with this simple test case at -O1 and above. So I switched my Android build back to release mode and indeed, it gets past the sys_prctl call. But then it crashes immediately after on the memset(). Here's the dissassembly:

(lldb) dis
libcrashmanager.so`google_breakpad::ExceptionHandler::HandleSignal:
    0xa6648780 <+0>:   pushl  %ebp
    0xa6648781 <+1>:   movl   %esp, %ebp
    0xa6648783 <+3>:   pushl  %ebx
    0xa6648784 <+4>:   pushl  %edi
    0xa6648785 <+5>:   pushl  %esi
    0xa6648786 <+6>:   andl   $-0x10, %esp
    0xa6648789 <+9>:   subl   $0x10, %esp
    0xa664878c <+12>:  movl   %esp, %esi
    0xa664878e <+14>:  calll  0xa6648793                ; <+19> at exception_handler.cc:445
    0xa6648793 <+19>:  popl   %ebx
    0xa6648794 <+20>:  addl   $0x344c1, %ebx            ; imm = 0x344C1 
    0xa664879a <+26>:  movl   0x8(%ebp), %ecx
    0xa664879d <+29>:  movl   (%ecx), %eax
    0xa664879f <+31>:  testl  %eax, %eax
    0xa66487a1 <+33>:  je     0xa66487b2                ; <+50> at exception_handler.cc
    0xa66487a3 <+35>:  subl   $0xc, %esp
    0xa66487a6 <+38>:  pushl  0x8(%ecx)
    0xa66487a9 <+41>:  calll  *%eax
    0xa66487ab <+43>:  addl   $0x10, %esp
    0xa66487ae <+46>:  testb  %al, %al
    0xa66487b0 <+48>:  je     0xa66487ea                ; <+106> at linux_syscall_support.h
    0xa66487b2 <+50>:  movl   0x10(%ebp), %eax
    0xa66487b5 <+53>:  movl   0x8(%eax), %eax
    0xa66487b8 <+56>:  testl  %eax, %eax
    0xa66487ba <+58>:  jle    0xa66487f1                ; <+113> at exception_handler.cc:453
    0xa66487bc <+60>:  movl   $0x1, %ecx
    0xa66487c1 <+65>:  xorl   %edx, %edx
    0xa66487c3 <+67>:  xorl   %esi, %esi
    0xa66487c5 <+69>:  xorl   %edi, %edi
    0xa66487c7 <+71>:  pushl  %ebx
    0xa66487c8 <+72>:  movl   $0x4, %ebx
    0xa66487cd <+77>:  movl   $0xac, %eax
    0xa66487d2 <+82>:  int    $0x80
    0xa66487d4 <+84>:  popl   %ebx
    0xa66487d5 <+85>:  movl   %eax, %edi
    0xa66487d7 <+87>:  cmpl   $0xfffff001, %edi         ; imm = 0xFFFFF001 
    0xa66487dd <+93>:  jb     0xa6648807                ; <+135> at exception_handler.cc:459
    0xa66487df <+95>:  negl   %edi
    0xa66487e1 <+97>:  calll  0xa66452b0                ; symbol stub for: __errno
    0xa66487e6 <+102>: movl   %edi, (%eax)
    0xa66487e8 <+104>: jmp    0xa6648807                ; <+135> at exception_handler.cc:459
    0xa66487ea <+106>: xorl   %eax, %eax
    0xa66487ec <+108>: jmp    0xa66488b0                ; <+304> at exception_handler.cc:487
    0xa66487f1 <+113>: je     0xa66487f8                ; <+120> at exception_handler.cc:453
    0xa66487f3 <+115>: cmpl   $-0x6, %eax
    0xa66487f6 <+118>: jne    0xa6648807                ; <+135> at exception_handler.cc:459
    0xa66487f8 <+120>: movl   0x10(%ebp), %eax
    0xa66487fb <+123>: movl   0xc(%eax), %edi
    0xa66487fe <+126>: calll  0xa6645460                ; symbol stub for: getpid
    0xa6648803 <+131>: cmpl   %eax, %edi
    0xa6648805 <+133>: je     0xa66487bc                ; <+60> [inlined] sys_prctl(int, unsigned long, unsigned long, unsigned long, unsigned long) at exception_handler.cc:454
    0xa6648807 <+135>: subl   $0x4, %esp
    0xa664880a <+138>: leal   0x4b4(%ebx), %eax
    0xa6648810 <+144>: pushl  $0x158                    ; imm = 0x158 
    0xa6648815 <+149>: pushl  $0x0
    0xa6648817 <+151>: pushl  %eax
    0xa6648818 <+152>: calll  0xa66453e0                ; symbol stub for: memset
    0xa664881d <+157>: addl   $0x10, %esp
    0xa6648820 <+160>: leal   0x434(%ebx), %eax
    0xa6648826 <+166>: subl   $0x4, %esp
    0xa6648829 <+169>: pushl  $0x80
    0xa664882e <+174>: pushl  0x10(%ebp)
->  0xa6648831 <+177>: movl   %eax, 0x8(%esi)
    0xa6648834 <+180>: pushl  %eax
    0xa6648835 <+181>: calll  0xa6645260                ; symbol stub for: memcpy
    0xa664883a <+186>: addl   $0xc, %esp
    0xa664883d <+189>: leal   0x4b8(%ebx), %eax
    0xa6648843 <+195>: pushl  $0xe4
    0xa6648848 <+200>: movl   0x14(%ebp), %ecx
    0xa664884b <+203>: movl   %ecx, %edi
    0xa664884d <+205>: pushl  %edi
    0xa664884e <+206>: pushl  %eax
    0xa664884f <+207>: calll  0xa6645260                ; symbol stub for: memcpy
    0xa6648854 <+212>: addl   $0x10, %esp
    0xa6648857 <+215>: movl   0x60(%edi), %eax
    0xa664885a <+218>: testl  %eax, %eax
    0xa664885c <+220>: je     0xa6648873                ; <+243> at exception_handler.cc:479
    0xa664885e <+222>: subl   $0x4, %esp
    0xa6648861 <+225>: leal   0x59c(%ebx), %ecx
    0xa6648867 <+231>: pushl  $0x70
    0xa6648869 <+233>: pushl  %eax
    0xa664886a <+234>: pushl  %ecx
    0xa664886b <+235>: calll  0xa6645260                ; symbol stub for: memcpy
    0xa6648870 <+240>: addl   $0x10, %esp
    0xa6648873 <+243>: subl   $0xc, %esp
    0xa6648876 <+246>: pushl  $0xe0
    0xa664887b <+251>: calll  0xa6645470                ; symbol stub for: syscall
    0xa6648880 <+256>: addl   $0x10, %esp
    0xa6648883 <+259>: movl   %eax, 0x4b4(%ebx)
    0xa6648889 <+265>: movl   0x8(%ebp), %edi
    0xa664888c <+268>: cmpl   $0x0, 0x68(%edi)
    0xa6648890 <+272>: je     0xa66488b2                ; <+306> at exception_handler.cc:486
    0xa6648892 <+274>: movl   0x68(%edi), %eax
    0xa6648895 <+277>: subl   $0x4, %esp
    0xa6648898 <+280>: pushl  0x8(%edi)
    0xa664889b <+283>: pushl  $0x1d8                    ; imm = 0x1D8 
    0xa66488a0 <+288>: pushl  0x8(%esi)
    0xa66488a3 <+291>: calll  *%eax
    0xa66488a5 <+293>: addl   $0x10, %esp
    0xa66488a8 <+296>: movl   %eax, %ecx
    0xa66488aa <+298>: movb   $0x1, %al
    0xa66488ac <+300>: testb  %cl, %cl
    0xa66488ae <+302>: je     0xa66488b2                ; <+306> at exception_handler.cc:486
    0xa66488b0 <+304>: jmp    0xa66488be                ; <+318> at exception_handler.cc:487
    0xa66488b2 <+306>: subl   $0x8, %esp
    0xa66488b5 <+309>: pushl  0x8(%esi)
    0xa66488b8 <+312>: pushl  %edi
    0xa66488b9 <+313>: calll  0xa6645490                ; symbol stub for: google_breakpad::ExceptionHandler::GenerateDump(google_breakpad::ExceptionHandler::CrashContext*)
    0xa66488be <+318>: leal   -0xc(%ebp), %esp
    0xa66488c1 <+321>: popl   %esi
    0xa66488c2 <+322>: popl   %edi
    0xa66488c3 <+323>: popl   %ebx
    0xa66488c4 <+324>: popl   %ebp
    0xa66488c5 <+325>: retl   
(lldb) reg r
General Purpose Registers:
       eax = 0xa667d088  libcrashmanager.so`google_breakpad::(anonymous namespace)::g_crash_context_
       ebx = 0xa667cc54  libcrashmanager.so`_GLOBAL_OFFSET_TABLE_
       ecx = 0x00000050
       edx = 0xa667d260  libcrashmanager.so`google_breakpad::(anonymous namespace)::g_handler_stack_
       edi = 0x00000000
       esi = 0x00000000
       ebp = 0xa1f98548
       esp = 0xa1f98514
       eip = 0xa6648831  libcrashmanager.so`google_breakpad::ExceptionHandler::HandleSignal(int, siginfo*, void*) + 177 at exception_handler.cc:459
    eflags = 0x00010292
        cs = 0x00000073
        fs = 0x0000003b
        gs = 0x00000033
        ss = 0x0000007b
        ds = 0x0000007b
        es = 0x0000007b

Looking at the assembly, wait what's this:

    0xa66487c3 <+67>:  xorl   %esi, %esi   ; zero's esi, right?
...  ; nothing related to %esi occurs
->  0xa6648831 <+177>: movl   %eax, 0x8(%esi)  ; BOOM

WTF clang?

I don't know where to go with this.

j.

To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-discuss+unsub...@googlegroups.com.
To post to this group, send email to google-breakpad-discuss@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-discuss+unsub...@googlegroups.com.
To post to this group, send email to google-breakpad-discuss@googlegroups.com.

Mike Frysinger

unread,
May 3, 2018, 12:32:00 AM5/3/18
to google-brea...@googlegroups.com
sorry, i was looking at x86_64, and you were clearly looking at x86

can you run the bad clang invocation and add -v ?  that should hopefully show what extra args are being passed in.  iirc, Android enables PIE by default now, but it sounds like it's also adding other -m flags.  so my default clang usage wouldn't line up.

if we're getting bad codegen, and it's fixed in newer clang, we could report it to Android, but it's unlikely they'd backport anything.  so we'd either have to figure out a workaround for LSS, or just mark that version of the Android NDK as bad and #error out at compile time and tell people to use a diff version :/.
-mike

To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-d...@googlegroups.com.
To post to this group, send email to google-brea...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-d...@googlegroups.com.
To post to this group, send email to google-brea...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-d...@googlegroups.com.
To post to this group, send email to google-brea...@googlegroups.com.

Jay Soffian

unread,
May 3, 2018, 10:43:57 AM5/3/18
to google-brea...@googlegroups.com
I've updated the invocation to match how the NDK is calling clang++. Here it is at O2, which seems sane:

+ NDK=/Applications/android-ndk-r16b
+ /Applications/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ -gcc-toolchain /Applications/android-ndk-r16b/toolchains/x86-4.9/prebuilt/darwin-x86_64 -target i686-none-linux-android -ffunction-sections -funwind-tables -fstack-protector-strong -fPIC -no-canonical-prefixes -fno-exceptions -fno-rtti -DNDEBUG -I/Applications/android-ndk-r16b/sources/cxx-stl/stlport/stlport -I/Applications/android-ndk-r16b/sources/cxx-stl//gabi++/include -DANDROID -D__ANDROID_API__=19 -mstackrealign -std=c++11 -frtti --sysroot /Applications/android-ndk-r16b/sysroot -isystem /Applications/android-ndk-r16b/sysroot/usr/include/i686-linux-android -S -o - test_lss.cc -O2 -v
Android clang version 5.0.300080  (based on LLVM 5.0.300080)
Target: i686-none-linux-android
Thread model: posix
InstalledDir: /Applications/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/bin
Found candidate GCC installation: /Applications/android-ndk-r16b/toolchains/x86-4.9/prebuilt/darwin-x86_64/lib/gcc/i686-linux-android/4.9.x
Selected GCC installation: /Applications/android-ndk-r16b/toolchains/x86-4.9/prebuilt/darwin-x86_64/lib/gcc/i686-linux-android/4.9.x
Candidate multilib: .;@m32
Selected multilib: .;@m32
 "/Applications/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" -cc1 -triple i686-none-linux-android -S -disable-free -disable-llvm-verifier -discard-value-names -main-file-name test_lss.cc -mrelocation-model pic -pic-level 2 -mthread-model posix -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu i686 -target-feature +ssse3 -target-linker-version 2.24 -momit-leaf-frame-pointer -v -dwarf-column-info -debugger-tuning=gdb -ffunction-sections -coverage-notes-file /Users/jsoffian/Work/code/ycm/YCrashManager_Android/ycrashmanager/-.gcno -resource-dir /Applications/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/5.0.300080 -isystem /Applications/android-ndk-r16b/sysroot/usr/include/i686-linux-android -D NDEBUG -I /Applications/android-ndk-r16b/sources/cxx-stl/stlport/stlport -I /Applications/android-ndk-r16b/sources/cxx-stl//gabi++/include -D ANDROID -D __ANDROID_API__=19 -isysroot /Applications/android-ndk-r16b/sysroot -internal-isystem /Applications/android-ndk-r16b/sysroot/usr/local/include -internal-isystem /Applications/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/5.0.300080/include -internal-externc-isystem /Applications/android-ndk-r16b/sysroot/include -internal-externc-isystem /Applications/android-ndk-r16b/sysroot/usr/include -O2 -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /Users/jsoffian/Work/code/ycm/YCrashManager_Android/ycrashmanager -ferror-limit 19 -fmessage-length 0 -femulated-tls -stack-protector 2 -mstackrealign -fobjc-runtime=gcc -fdiagnostics-show-option -vectorize-loops -vectorize-slp -o - -x c++ test_lss.cc
clang -cc1 version 5.0.300080 based upon LLVM 5.0.300080 default target x86_64-apple-darwin17.5.0
ignoring nonexistent directory "/Applications/android-ndk-r16b/sysroot/usr/local/include"
ignoring nonexistent directory "/Applications/android-ndk-r16b/sysroot/include"
#include "..." search starts here:
#include <...> search starts here:
 /Applications/android-ndk-r16b/sources/cxx-stl/stlport/stlport
 /Applications/android-ndk-r16b/sources/cxx-stl//gabi++/include
 /Applications/android-ndk-r16b/sysroot/usr/include/i686-linux-android
 /Applications/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/5.0.300080/include
 /Applications/android-ndk-r16b/sysroot/usr/include
End of search list.
.text
.file "test_lss.cc"
.section .text.main,"ax",@progbits
.globl main
.p2align 4, 0x90
.type main,@function
main:                                   # @main
.cfi_startproc
# BB#0:
pushl %ebp
.Lcfi0:
.cfi_def_cfa_offset 8
.Lcfi1:
.cfi_offset %ebp, -8
movl %esp, %ebp
.Lcfi2:
.cfi_def_cfa_register %ebp
pushl %ebx
pushl %edi
pushl %esi
andl $-16, %esp
subl $16, %esp
movl %esp, %esi
.Lcfi3:
.cfi_offset %esi, -20
.Lcfi4:
.cfi_offset %edi, -16
.Lcfi5:
.cfi_offset %ebx, -12
calll .L0$pb
.L0$pb:
popl %ebx
.Ltmp0:
addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp0-.L0$pb), %ebx
movl $33, %esi
movl $11, %ecx
movl $22, %edx
movl $44, %edi
#APP
pushl %ebx
movl $4, %ebx
movl $172, %eax
int $128
popl %ebx
#NO_APP
movl %eax, %edi
cmpl $-4095, %edi            # imm = 0xF001
jb .LBB0_2
# BB#1:
negl %edi
calll __errno@PLT
movl %edi, (%eax)
movl $-1, %edi
.LBB0_2:
movl %edi, %eax
leal -12(%ebp), %esp
popl %esi
popl %edi
popl %ebx
popl %ebp
retl
.Lfunc_end0:
.size main, .Lfunc_end0-main
.cfi_endproc


.ident "Android clang version 5.0.300080  (based on LLVM 5.0.300080)"
.section ".note.GNU-stack","",@progbits


When running it at -O0, the code gen re: %esi looks questionable to me, but I may be misreading the assembly:


+ NDK=/Applications/android-ndk-r16b
+ /Applications/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ -gcc-toolchain /Applications/android-ndk-r16b/toolchains/x86-4.9/prebuilt/darwin-x86_64 -target i686-none-linux-android -ffunction-sections -funwind-tables -fstack-protector-strong -fPIC -no-canonical-prefixes -fno-exceptions -fno-rtti -DNDEBUG -I/Applications/android-ndk-r16b/sources/cxx-stl/stlport/stlport -I/Applications/android-ndk-r16b/sources/cxx-stl//gabi++/include -DANDROID -D__ANDROID_API__=19 -mstackrealign -std=c++11 -frtti --sysroot /Applications/android-ndk-r16b/sysroot -isystem /Applications/android-ndk-r16b/sysroot/usr/include/i686-linux-android -S -o - test_lss.cc -O0 -v
Android clang version 5.0.300080  (based on LLVM 5.0.300080)
Target: i686-none-linux-android
Thread model: posix
InstalledDir: /Applications/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/bin
Found candidate GCC installation: /Applications/android-ndk-r16b/toolchains/x86-4.9/prebuilt/darwin-x86_64/lib/gcc/i686-linux-android/4.9.x
Selected GCC installation: /Applications/android-ndk-r16b/toolchains/x86-4.9/prebuilt/darwin-x86_64/lib/gcc/i686-linux-android/4.9.x
Candidate multilib: .;@m32
Selected multilib: .;@m32
 "/Applications/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" -cc1 -triple i686-none-linux-android -S -disable-free -disable-llvm-verifier -discard-value-names -main-file-name test_lss.cc -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu i686 -target-feature +ssse3 -target-linker-version 2.24 -v -dwarf-column-info -debugger-tuning=gdb -ffunction-sections -coverage-notes-file /Users/jsoffian/Work/code/ycm/YCrashManager_Android/ycrashmanager/-.gcno -resource-dir /Applications/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/5.0.300080 -isystem /Applications/android-ndk-r16b/sysroot/usr/include/i686-linux-android -D NDEBUG -I /Applications/android-ndk-r16b/sources/cxx-stl/stlport/stlport -I /Applications/android-ndk-r16b/sources/cxx-stl//gabi++/include -D ANDROID -D __ANDROID_API__=19 -isysroot /Applications/android-ndk-r16b/sysroot -internal-isystem /Applications/android-ndk-r16b/sysroot/usr/local/include -internal-isystem /Applications/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/5.0.300080/include -internal-externc-isystem /Applications/android-ndk-r16b/sysroot/include -internal-externc-isystem /Applications/android-ndk-r16b/sysroot/usr/include -O0 -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /Users/jsoffian/Work/code/ycm/YCrashManager_Android/ycrashmanager -ferror-limit 19 -fmessage-length 0 -femulated-tls -stack-protector 2 -mstackrealign -fobjc-runtime=gcc -fdiagnostics-show-option -o - -x c++ test_lss.cc
clang -cc1 version 5.0.300080 based upon LLVM 5.0.300080 default target x86_64-apple-darwin17.5.0
ignoring nonexistent directory "/Applications/android-ndk-r16b/sysroot/usr/local/include"
ignoring nonexistent directory "/Applications/android-ndk-r16b/sysroot/include"
#include "..." search starts here:
#include <...> search starts here:
 /Applications/android-ndk-r16b/sources/cxx-stl/stlport/stlport
 /Applications/android-ndk-r16b/sources/cxx-stl//gabi++/include
 /Applications/android-ndk-r16b/sysroot/usr/include/i686-linux-android
 /Applications/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/5.0.300080/include
 /Applications/android-ndk-r16b/sysroot/usr/include
End of search list.
.text
.file "test_lss.cc"
.section .text.main,"ax",@progbits
.globl main
.p2align 4, 0x90
.type main,@function
main:                                   # @main
.cfi_startproc
# BB#0:
pushl %ebp
.Lcfi0:
.cfi_def_cfa_offset 8
.Lcfi1:
.cfi_offset %ebp, -8
movl %esp, %ebp
.Lcfi2:
.cfi_def_cfa_register %ebp
pushl %ebx
pushl %edi
pushl %esi
andl $-16, %esp
subl $48, %esp
.Lcfi3:
.cfi_offset %esi, -20
.Lcfi4:
.cfi_offset %edi, -16
.Lcfi5:
.cfi_offset %ebx, -12
calll .L0$pb
.L0$pb:
popl %eax
.Ltmp0:
addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp0-.L0$pb), %eax
movl $4, %ecx
movl $11, %edx
movl $22, %esi
movl $33, %edi
movl $44, %ebx
movl $0, 40(%esp)
movl $4, (%esp)
movl $11, 4(%esp)
movl $22, 8(%esp)
movl $33, 12(%esp)
movl $44, 16(%esp)
movl %ebx, 36(%esp)          # 4-byte Spill
movl %eax, %ebx
movl %edi, 32(%esp)          # 4-byte Spill
movl %ecx, 28(%esp)          # 4-byte Spill
movl %edx, 24(%esp)          # 4-byte Spill
movl %esi, 20(%esp)          # 4-byte Spill
calll _ZL9sys_prctlimmmm
leal -12(%ebp), %esp
popl %esi
popl %edi
popl %ebx
popl %ebp
retl
.Lfunc_end0:
.size main, .Lfunc_end0-main
.cfi_endproc

.section .text._ZL9sys_prctlimmmm,"ax",@progbits
.p2align 4, 0x90
.type _ZL9sys_prctlimmmm,@function
_ZL9sys_prctlimmmm:                     # @_ZL9sys_prctlimmmm
.cfi_startproc
# BB#0:
pushl %ebp
.Lcfi6:
.cfi_def_cfa_offset 8
.Lcfi7:
.cfi_offset %ebp, -8
movl %esp, %ebp
.Lcfi8:
.cfi_def_cfa_register %ebp
pushl %ebx
pushl %edi
pushl %esi
andl $-16, %esp
subl $64, %esp
movl %esp, %esi
.Lcfi9:
.cfi_offset %esi, -20
.Lcfi10:
.cfi_offset %edi, -16
.Lcfi11:
.cfi_offset %ebx, -12
# BB#1:
cmpl $-4095, 56(%esi)        # imm = 0xF001
jb .LBB1_3
# BB#2:
xorl %eax, %eax
subl 56(%esi), %eax
movl 52(%esi), %ebx          # 4-byte Reload
movl %eax, 4(%esi)           # 4-byte Spill
calll __errno@PLT
movl 4(%esi), %ebx           # 4-byte Reload
movl %ebx, (%eax)
movl $-1, 56(%esi)
.LBB1_3:
movl 56(%esi), %eax
leal -12(%ebp), %esp
popl %esi
popl %edi
popl %ebx
popl %ebp
retl
.Lfunc_end1:
.size _ZL9sys_prctlimmmm, .Lfunc_end1-_ZL9sys_prctlimmmm
.cfi_endproc


.ident "Android clang version 5.0.300080  (based on LLVM 5.0.300080)"
.section ".note.GNU-stack","",@progbits



The part that looks suspicious to me is this:


movl 20(%ebp), %eax
movl %eax, 32(%esi)          # 4-byte Spill
       ...
movl 32(%esi), %eax          # 4-byte Reload
movl %eax, %esi


Why load from memory just to immediately spill it? But never mind that, then it clobbers esi with esi+0x32, which is whatever was at ebp+0x20. But looking up above, clang clearly thinks that ebp+0x20 is the fourth sys_prctl argument.

So that's the crash when compiling with APP_OPTIM=debug (which is -O0). 

The crash I'm seeing with APP_OPTIM=release (which is -O2) happens after sys_prctl returns. But if -O0 is broken I don't have confidence in -O2. Both crashes are related to esi, so it seems like make clang isn't tracking that register correctly.

Any ideas?

For now, I've switched back to building my app with GCC, so this isn't urgent. Also, I tested with the latest beta NDK and the same issue occurs. Can we loop in someone from the NDK team? Should I file an Android bug?

j.


To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-discuss+unsub...@googlegroups.com.
To post to this group, send email to google-breakpad-discuss@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-discuss+unsub...@googlegroups.com.
To post to this group, send email to google-breakpad-discuss@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-discuss+unsub...@googlegroups.com.
To post to this group, send email to google-breakpad-discuss@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "google-breakpad-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-breakpad-discuss+unsub...@googlegroups.com.
To post to this group, send email to google-breakpad-discuss@googlegroups.com.

Mike Frysinger

unread,
Sep 13, 2018, 5:30:18 PM9/13/18
to google-brea...@googlegroups.com
filing a bug for the Android team is prob your best bet.  i don't have any contacts with the respective teams.
-mike

heirish lee

unread,
May 27, 2020, 4:23:30 AM5/27/20
to google-breakpad-discuss
Reply here in case you still have this problem.

I met the same issue these days.
built my sdk with breakpad using android ndk r16b.
and it crashes on android x86.

fixed by using the latest lss head file, 
FYI
Reply all
Reply to author
Forward
0 new messages