If I run this with the -O0 build it never ever reaches OpenSP::Vector<OpenJade_DSSSL::ProcessingMode::Rule*>::erase So the code is still broken, but we just don't reach it. -O0 isn't even a good mitigation.
Tracking the root cause further. Very late in the -O0 build it then hits it like: ::erase (this=0xaaaaab027250, p1=0xaaaaaaeb5cf0, p2=0xaaaaaaeb5cf8) ::erase (this=0xaaaaab46cf10, p1=0xaaaaab883120, p2=0xaaaaab883128) ... All that looks reasonable. The other call we see in -O2 builds is broken: ::erase (p1=0x1, p2=0x2, ... But this is actually a header in: src:opensp Defines in /usr/include/OpenSP/Vector.cxx:331 for (const T *p = p1; p != p2; p++) # works on pointer p But for any type that does not surely increase the right way. E.g. p1 = 0x1, p2 = 0x2 but increment = 4 (due to pointer arithmetic) Then it will increment p forever. If we use <= it will stop as soon as we would run over. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1869734 Title: openjade segfaults on arm (due to gcc optimization) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/openjade/+bug/1869734/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
