Repository navigation
[cppjit] Install valgrind from conda-forge on the valgrind cells - #101
Conversation
a58f364 to
9f64057
Compare
|
This works perfectly. We no longer require suppressing any cppjit tests with vg + arm |
|
Can you write in the commit log why this change is needed? |
I can paste it in the extended commit description when performing the squash and merge. I added it to the PR description for now |
|
Let's hope this does not break other downstream clients. |
This only effects the images used by cppjit's CI. I have a follow up that updates CppInterOp's CI to cppjit dropping all the last traces from cppyy, and at that point we probably need to vendor the same valgrind version. I will open the ci-workflows patches once I have the wheels building (compiler-research/cppjit#22) |
ARM valgrind nightly failures in cppjit were caused by a bug in valgrind. They are deterministic: the same "Unrecognised instruction at 0x35b8702c" on every nightly run. The instruction is 0x38BFC108 = LDAPRB, an ARMv8.3 FEAT_LRCPC load-acquire byte, i.e. an atomic acquire load. The JIT emits it because the arm runner's CPU supports LRCPC, but Ubuntu 24.04's valgrind 3.22.0 can't decode it, so valgrind raises SIGILL and kills pytest mid-suite. Memcheck itself reports 0 errors.
Bug: https://bugs.kde.org/show_bug.cgi?id=476465
Fix: https://sourceware.org/git/?p=valgrind.git;a=commit;h=41e2f95cf129191555e0048ccbbb392ee0fb155e
The valgrind release carrying the fix is not published for the Ubuntu version on the CI runners, so
this installs valgrind from conda-forge, which packages latest valgrind for both linux-64 and
linux-aarch64. I've verified this works on compiler-research/cppjit#29: both cells install valgrind 3.27.1 and pass on both architectures, with the previously-gated concurrency tests re-enabled on arm.