macOS Catalina: FAIL: t-powm
Jack Howarth
howarth.mailing.lists at gmail.com
Fri Nov 8 22:39:35 UTC 2019
On Fri, Nov 8, 2019 at 8:35 AM Torbjörn Granlund <tg at gmplib.org> wrote:
> Jack Howarth <howarth.mailing.lists at gmail.com> writes:
>
> FYI, I reported this issue to Apple via radar and their response was...
>
> Engineering has provided the following information regarding this issue:
> It sounds like gmp has a memory corruption issue which -fstack-check has
> uncovered. We suggest filing a bug with the developers of gmp.
>
> So they believe clang is accurately detecting a bug in gmp. A back trace
> of
> the failure shows...
>
> bash-3.2# lldb ./t-powm
> lldb ./t-powm
> (lldb) target create "./t-powm"
> Current executable set to './t-powm' (x86_64).
> (lldb) r
> Process 39643 launched:
> '/Users/howarth/gmp_regression/default_build/t-powm' (x86_64)
> Process 39643 stopped
> * thread #1, queue = 'com.apple.main-thread', stop reason =
> EXC_BAD_ACCESS
> (code=EXC_I386_GPFLT)
> frame #0: 0x00007fff71afc386
> libdyld.dylib`stack_not_16_byte_aligned_error
> libdyld.dylib`stack_not_16_byte_aligned_error:
> -> 0x7fff71afc386 <+0>: movdqa %xmm0, (%rsp)
> 0x7fff71afc38b <+5>: int3
> 0x7fff71afc38c <+6>: nop
> 0x7fff71afc38d <+7>: nop
> Target 0: (t-powm) stopped.
> (lldb) bt
> * thread #1, queue = 'com.apple.main-thread', stop reason =
> EXC_BAD_ACCESS
> (code=EXC_I386_GPFLT)
> * frame #0: 0x00007fff71afc386
> libdyld.dylib`stack_not_16_byte_aligned_error
>
> I am attaching the test case I created for them. Note that the failure
> can
> be triggered with only the t-powm executable built using the default
> stack
> checking so the problem seems to lie there and not in the gmp shared
> libraries.
>
> I cannot repro on a Intel broadwell Mac Air laptop.
>
> Can you help read the above output? In what GMP function does the
> poorly aligned stack occur?
>
> If it's in mpn_powm, I cannot see how it could be GMP's fault as that
> function is in C and never called by our asm. Thus compiler error.
>
> In a leaf (asm) function, stack alignment is not relevant unless
> instructions requiring a certain alignment are used.
>
> The only scenario which I can see where this would be a GMP bug is if an
> asm GMP function made a function call without ensuring proper alignment.
> But GMP very rarely make such calls; in fact I can only think of a few
> places where that is done.
>
> --
> Torbjörn
> Please encrypt, key id 0xC8601622
>
Torbjörn,
Are you using the clang from Xcode 11?
Apple clang version 11.0.0 (clang-1100.0.33.12)
Target: x86_64-apple-darwin19.0.0
Thread model: posix
InstalledDir:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
The LLVM clang 9.0.0 doesn't show the issue with its stack checking as I
believe Apple added some custom stack checking code that might not have
landed back upstream yet.
Jack
More information about the gmp-bugs
mailing list