The objects that cause the crash are created right there, all inside 
eLadderLogWriter::write(). It's a bit embarassing... se_SaveToLadderLog expects 
an 
tOutput, only to convert it to a string internally always, and ::write() 
supplies a string, so that string needs to get conveverted, and the way that 
happens is:
tOutput is a linked list of tOutputItem, which is an abstract base type... 
there is a string specialization.
So, to print a string, the code does:
create a linked list with a single element in it, containing a copy of the 
output string. It then goes over the list and copies everything into a target 
string.
So, two extra strings, two extra memory blocks.

Anyway, instead of one tOutputItem getting created, I see two. Not sure
whether the first one is even real, but the second one gets fed
corrupted list data already in its constructor.

I did get to reproduce the problem on other systems. The GCC version
required is 15.2, 14.3 is not affected, I could not conveniently test
15.1. You need to pass CXXFLAGS="-flto=auto -ffat-lto-objects" to
configure, which is what the debian build does, among others, but these
two are what triggers the problem.

It *might* be a compiler bug with these LTO options. More likely is that
we are violating the One Definition Rule somewhere, or do some other
undefined behavior that trips LTO up.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2127929

Title:
  armagetronad don't execute in Ubuntu 25.10

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/armagetronad/+bug/2127929/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to