Re: Incorrect processor define on Apple M1

Thomas Braun via omniORB-list <[email protected]> Sat, 15 Apr 2023 16:40:00 +0200
Newsgroups gmane.comp.corba.omniorb.user
Message-ID <[email protected]>
--=-PhO1dvdGRn0R9hd4DTQK
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

Am 15.04.2023 um 13:50 schrieb Duncan Grisby:
> On Fri, 2023-04-14 at 12:36 +0200, Thomas Braun via omniORB-list
> wrote:

Thanks for the quick reply,

> > we do have some issues on cppTango, which uses omniORB, with
> > obvious
> > crashes on Apple M1.
> > 
> > The problem seems to be that the omniORB pkg-config files use the
> > wrong processor defines.
> 
> [...]
> > and that gives
> > 
> > PROCESSOR_DEFINE='__arm__'
> > PROCESSOR_NAME='ArmProcessor'
> 
> I agree that it is not quite right. However, I am not sure how that
> could lead to a crash. The only place in omniORB that actually looks
> at
> that processor define is where it handles the old ARM mixed-endian
> double format. It certainly could become confused and break double
> precision values, which would clearly be bad, but it would not crash.
> 
> Or is it that the definition of __arm__ somehow breaks some other
> code
> that is not in omniORB?

Yes this is the problem. PROCESSOR_DEFINE is used in 
contrib/pkgconfig/omnithread.pc.in and include/omniconfig.h.in.

clang -print-target-triple says

arm64-apple-darwin22.3.0

and if I then check what it defines for architecture arm64 with

clang -arch arm64 -dM -E - < /dev/null | grep -e __aarch -e __arm

I get

#define __aarch64__ 1
#define __arm64 1
#define __arm64__ 1

and checking for plain arm gives

clang -arch arm -dM -E - < /dev/null | grep -e __aarch -e __arm 
#define __arm 1
#define __arm__ 1

[2] hints also to the fact that __arm__ should be only defined for
32bit arm.

Grepping through some system files gives

grep -A3 __arm__
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xcto
olchain/usr/include/c++/v1/__threading_support
#if defined(_M_IX86) || defined(__i386__) || defined(_M_ARM) ||
defined(__arm__)
typedef void* __libcpp_recursive_mutex_t[6];
#elif defined(_M_AMD64) || defined(__x86_64__) || defined(_M_ARM64) ||
defined(__aarch64__)
typedef void* __libcpp_recursive_mutex_t[5];

which gives the same conclusion.

To summarize:
PROCESSOR_DEFINE should be __aarch64__ on Apple M1 as that is what
clang defines by default.

> If the crash is in omniORB, can you give a stack trace for it?

What we see are random SIGABORT when deallocating std::string objects.
The fix was to *not* use the pkg-config file supplied with omniORB.
That was how we found the __arm__ define. I'm attaching the lldb output
of one of those crashes.

[2]: https://stackoverflow.com/a/41666292


--=-PhO1dvdGRn0R9hd4DTQK
Content-Type: application/gzip; name="sigabrt.trace.gz"
Content-Disposition: attachment; filename="sigabrt.trace.gz"
Content-Transfer-Encoding: base64

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


--=-PhO1dvdGRn0R9hd4DTQK
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
omniORB-list mailing list
[email protected]
https://www.omniorb-support.com/mailman/listinfo/omniorb-list

--=-PhO1dvdGRn0R9hd4DTQK--