I think this is related to the issue I ran into on aarch64 Linux, commented in issue #1012.
type Portable_Path is new String with
Dynamic_Predicate => (for all Char of Portable_Path => Char /= '\');
-- A portable path always uses forward slashes. For use in the current
-- platform, it should be adapted first.
Whenever the dynamic predicate on Portable_Path
is executed, alr crashes with SIGABRT
on OpenBSD 7.1 with GNAT 11.2.0 from the ports collection (gnat_external from alire's point of view).
With ktrace
, I was able to determine the abort reason as "reversed memcpy". My understanding is that this is thrown when the src
and dst
arguments to memcpy overlap. I have no idea why GNAT would do that.
As in my comment on the other issue, adding Alignment => 2
to the Portable_Path
type appears to fix the crash. This feels like a workaround for a compiler bug though, so I'm not sure that patching Alire is the right approach.
I'm reporting this issue here for visibility, but I think it needs more investigation to understand why GNAT is generating code this way.
Pay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too