On 20/11/24 22:14, Dimitry Andric wrote:
On 20 Nov 2024, at 18:32, Guido Falsi <m...@madpilot.net> wrote:
I've noticed that recently some ports are dumping core during builds of
dependencies in head in poudriere.
I'm seeing this for example with sassc crashing while trying to build
x11-themes/greybird-theme.
My first suspect was the llvm upgrade in head, but forcing sassc and libsass to
build with older clang via USES=llvm:max=18 is not helping.
I did recompile the offending programs with debug and tried a backtrace and got
this:
```
(lldb) bt
* thread #1, name = 'sassc', stop reason = signal SIGSEGV: invalid permissions
for mapped object (fault address: 0x82374a000)
* frame #0: 0x000000082374a000 libsass.so.1
frame #1: 0x0000000823865a86 libsass.so.1`_GLOBAL__sub_I_ast.cpp [inlined] double
std::__1::__math::acos[abi:se190102]<int, 0>(__x=-1) at
inverse_trigonometric_functions.h:40:10
frame #2: 0x0000000823865a81 libsass.so.1`_GLOBAL__sub_I_ast.cpp [inlined]
__cxx_global_var_init at units.hpp:11:21
frame #3: 0x0000000823865a81 libsass.so.1`_GLOBAL__sub_I_ast.cpp at
ast.cpp:0
frame #4: 0x00001eac6e3f078d ld-elf.so.1
frame #5: 0x00001eac6e3ef349 ld-elf.so.1
frame #6: 0x00001eac6e3ec099 ld-elf.so.1`___lldb_unnamed_symbol27 + 25
```
which points me to this upstream line of code:
https://github.com/sass/libsass/blob/7037f03fabeb2b18b5efa84403f5a6d7a990f460/src/units.hpp#L11
I could change the way it derives PI, but I'm not sure this is the correct fix.
At first sight this looks like some sort of initialization order fiasco, but
without a full backtrace and some indications on what it is exactly segfaulting
on it is hard to say. Is it reproducible?
It is fully reproducible here by just compiling the sassc port and
trying to run it. It segfaults on startup.
In fact that is the full backtrace, I don't think there is much else to
extract, but maybe I'm wrong, do you have steps to take to get more
information out of lldb?
I'm using head at cdfd0600dc8882f0a0d0e6d9a1cdcf926edba6d6 in both the
host and poudriere jail. Tomorrow I'll try reproducing this on a local
machine building on it.
That said, it's rather crazy to calculate pi this way, when math.h has a
perfectly good M_PI define for this.
I find that line of code strange too, but it is working on releases.
You could replace this initialization with that, or try using constexpr instead
of const, but it is papering over the real problem, which seems to be some
unmapped library?
What do you mean by unmapped library? I'll try to play around with ldd
and similar tolls tomorrow, maybe I can uncover something.
I'm building the port as usual in poudriere, as a dependency of what I'm
trying to test, looks like something changed in head causing this failure.
--
Guido Falsi <m...@madpilot.net>