OpenFodder / openfodder

Open Fodder: An open source port of Cannon Fodder
http://openfodder.com
GNU General Public License v3.0
459 stars 42 forks source link

Some segfaults on OpenBSD (backtraces included) #13

Closed ibara closed 6 years ago

ibara commented 6 years ago

Hello --

I would like to make a package of OpenFodder for OpenBSD. While the game compiles fine, it crashes while playing. There are two backtraces here, and I will explain both.

  1. The openfodder-opening.txt backtrace is what happens if you let the opening cinematics play. After a second or two, the game crashes. If, however, you click to cancel the cinematic before the crash occurs, the game will successfully launch.

  2. The openfodder-level2.txt backtrace is what happens once level 2 loads. Level 1 plays perfectly.

For completeness, I am using the GOG.com version of Cannon Fodder.

Let me know if you need anything more. openfodder-level2.txt openfodder-opening.txt

segrax commented 6 years ago

Hey,

Thats great news, Thank you!

And thanks for the reports,

The second issue has been a long standing 'random' issue which never (well once) occured for me, now its clear why. I've pushed a commit which fixes it.

Seemingly OpenBSD has much better memory randomisation than any of the other platforms we've played on. if the camera was scrolled vertically in a way where only 2-3 rows of a certain tile had to be rendered, and said tile was at the end of the tile graphics file, it would overflow as it would still try to draw all 16 rows

I've also had a go at fixing the first issue, and as a last resort added some checks which should prevent it, but so far i was unable to trigger the fault myself, let me know if it pursits, and perhaps I will install OpenBSD.

Cheers

EDIT: Opps, this wasnt meant to be closed

ibara commented 6 years ago

Yes, OpenBSD is known for the memory randomization stuff. Thanks for the quick fixes; I'll write back and let you know how it goes.

ibara commented 6 years ago

Unfortunately the crashes persist. Backtraces attached. openfodder-level2-2.txt openfodder-opening-2.txt

segrax commented 6 years ago

Ah,

The level2 issue is a read on the map this time, its reading past the end (when camera is panned near to the bottom right, tiles on the edge of the camera render from outside the map buffer)

Just pushed a fix for it

ibara commented 6 years ago

Still crashes, but the backtrace is different every time, which is good :) openfodder-level2-3.txt

segrax commented 6 years ago

Ok,

Just pushed again Maybe this time its fixed,

i've also had another go at the intro fix, i forgot each intro type has its own function with a > 320 check

ibara commented 6 years ago

The intro fix worked! I can watch the full thing without any issues. I was able to get farther with playing the game--I made it all the way to Phase 2 of level 2, then it crashed. openfodder-level2-4.txt

segrax commented 6 years ago

Aha, ok,

I've just gone and fixed all the locations using the map, to check for out-of-bounds ;)

Hopefully it should be all good this time

ibara commented 6 years ago

Everything is fixed now. I'll get on importing an OpenBSD package of OpenFodder now.

ibara commented 6 years ago

One thing I noticed with these changes is the text that accompanies the intros disappears right away. For example, start the game and it should say Open Fodder with the helicopter flying around. But now Open Fodder shows up for a split second then disappears.

But there are no more crashes :)

segrax commented 6 years ago

ok,

fixed :)

segrax commented 6 years ago

FYI; we are due to tag/release 1.4.0 any day now if you want to base your package off that version