Community Packages

Please read this before reporting a bug:
https://wiki.archlinux.org/title/Bug_reporting_guidelines

Do NOT report bugs when a package is just outdated, or it is in the AUR. Use the 'flag out of date' link on the package page, or the Mailing List.

REPEAT: Do NOT report bugs for outdated packages!
Tasklist

FS#61242 - [flobopuyo] 0.20-10 segfaults

Attached to Project: Community Packages
Opened by Fnord Popos (noddy) - Wednesday, 02 January 2019, 03:03 GMT
Last edited by Jaroslav Lichtblau (Dragonlord) - Sunday, 19 January 2020, 20:30 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Jaroslav Lichtblau (Dragonlord)
Architecture x86_64
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:

flobopuyo-0.20-10 crashes when you start it, choose "Single Player Game," and then choose "Medium" or "Hard". It does not crash with "Easy", or with "Two Players Game."

The crash happens in

PuyoState PuyoPuyo::getPuyoState() {
if (this != NULL) return state;
return PUYO_EMPTY;
}

which, with -O2, gets compiled to a Laconic

mov 0x8(%rdi),%eax
retq

because obviously who in their right mind would declare a few select methods as non-virtual, and then call them on a NULL pointer!?

The code base is peppered with this fascinating invention, so patching the game would require some effort. The easiest way to get it into working state is to disable optimizations.

I propose either adding

options=(!buildflags)

to the PKGBUILD, or fiddling with CXXFLAGS to filter the optimizations out.
This task depends upon

Closed by  Jaroslav Lichtblau (Dragonlord)
Sunday, 19 January 2020, 20:30 GMT
Reason for closing:  Fixed
Additional comments about closing:  Fixed in flobopuyo-0.20-11
Comment by Christian Cornelssen (ccorn) - Saturday, 18 January 2020, 12:13 GMT
Thanks @noddy for identifying the issue.
Adding `-fno-delete-null-pointer-checks` to `CXXFLAGS` seems to suffice:

~~~ diff
--- a/trunk/PKGBUILD
+++ b/trunk/PKGBUILD
@@ -34,7 +34,7 @@ prepare() {

build() {
cd "${srcdir}"/$pkgname-$pkgver
-
+ CXXFLAGS+=" -fno-delete-null-pointer-checks"
make
}
~~~

Loading...