Opened 3 months ago

Last modified 3 months ago

#13603 new defect

BASE: Detection: Engine (groovie, plumbers) plugins produce crash on adding and start of games

Reported by: raziel- Owned by:
Priority: normal Component: --Other--
Version: Keywords: Big Endian, PPC, plugins, add games, groovie, plumbers
Cc: Game:

Description

ScummVM 2.7.0git (Jun 20 2022 22:48:25)
Features compiled in: Vorbis FLAC MP3 RGB zLib MPEG2 Theora AAC A/52 FreeType2 FriBiDi JPEG PNG GIF cloud (servers, local) TinyGL OpenGL (with shaders)

I get a crash when i try to "Add gme" from launcher.
I can browse to and choose the directory to where it should look for a supported game, but as soon as i click on "Choose" it will crash in the same place everytime (see crashlog).

I tested with a full build (with and without unsupported engines).

I also get a crash when starting certain games now (e.g. Myst 3), which also seem to point to the detection plugin.

It seems to be either related to the size of detection plugin (a test with only the agi engine built (both engine and detection plugin) did not trigger a crash, or certain engines (but it's tedious and time consuming to only build certain engines into the dection plugin...so it may take some time to find out if there are engine related issues (Myst3 engine would be a good starting point).

In the meantime, if anyone can make anything from the crashlog, please, do speak up.

Thank you

nb: it would be easy to simply switch to static detection (because that still works fine), but that would only hide the issue which, for sure, will bite me later on.

AmigOS4 - PPC - SDL2 - BE - plugins
gcc (adtools build 11.3.0) 11.3.0

Attachments (1)

Crashlog_scummvm_2022-07-03_17-57-16.txt (42.1 KB ) - added by raziel- 3 months ago.

Download all attachments as: .zip

Change History (11)

comment:1 by raziel-, 3 months ago

Yep, the bug is definitely size-based regarding the detection.plugin.

Myst3 runs perfectly fine, as do other games (even AGS games show up with a 50/50 chance) with only certain engines built into detection.plugin (f.e. AGS, Myst3, Scumm)

A sized-based bug in the detection.plugin would also explain my random crashes on consecutive starts of scummvm (after closing it at least one time)

I have lots of free ram available btw, so that can't be it.
I'm suspecting a list, that might be created from detection.plugin on-the-fly to look up known/unknown/supported games, causes some mischief in the background (if too big)...but that is, of course, pure guess-work.

Maybe someone has an idea?
Please?

comment:2 by raziel-, 3 months ago

Component: CommonEngine: Plumbers
Keywords: add games added
Summary: LAUNCHER: Crash in detection plugin (Add game and start certain games)BASE: Detection: plumbers.plugin produce crash on adding games and start of games

@dwatteau

This is on AmigaOS 4, and with 2.7.0git, right?

Yes, but also on 2.6 and some revisions beforehand, i can't do a bisect easily, since i have to manually download a revision, build and check, so i haven't checked many

Did you also have the problem with the 2.6.0pre-release version?

Yes, see above

Was it a debug build or a release build? (i.e. was the -g GCC flag used?).

Both, but i explicitely test with debug builds to get the most out of the crash logs

Did it use to work at some point, or has this issue always been there with plugins?

Nope, it used to work for a long time, but i can't pinpoint when it started to act up, probably somewhere around when the metaengines stuff was revised (but that is a long shot in the dark)

Was it a Mass Add or just the standard Add Game action?

Both, and it crashes on starting games aswell (absolutely unusable in the current form)

@lephilousophe

Did you try with buildbot builds?

Still not tried, will report back when i did (soon-ish)

Since when does it fail and does it fail with future release too?

Yes, and please see mny answer to @dwatteau above

I am not sure the problem is size related it seems that the detection plugin has a problem at execution (and not at load).

You are right, it's only one engine, plumbers, that causes it.
(And of course it's the smallest engine...i was bisecting manually by taking out two engines starting from the biggeest and going down, compiling, testing...two days wasted, if i only had started with the smallest...sigh)

If i take the plumbers engine out, everything is back to normal.
I have yet to test all engines except plumbers, but i'm pretty sure that is the culprit.

Could you please try the following commands instead:

  • scummvm --list-all-games
  • scummvm --list-all-engines

I'm getting all the engines that are actually built in, even plumbers show up

You can also set the debuglevel to 9 (edit the settings file) to make sure nothing fishy happens during the enumeration.

If you still need the debug output i'll add it later

...

Hopefully someone can make out something in the stacktrace now?
nb: EVERY stacktrace looks EXACTLY the same, no matter what engines are built in, as long as plumbers is there to crash...

comment:3 by raziel-, 3 months ago

Back to bisecting...there's at least one other engine causing the exact same crash (excluding cge, composer and private so far)

I'll update this item, once i have checked all engines again...

comment:4 by lephilousophe, 3 months ago

I don't understand, the crash log posted here is not the same as the one you sent to me and it's not failing at the same place at all...
The one you sent to me was failing at (null pointer when trying to detect games):

[base/plugins.cpp:738] scummvm:_ZN13EngineManager11detectGamesERKN6Common6FSListEmb()+0x16c (section 10 @ 0x34144)

This one fails later in the detection code.
Could you try a buildbot build of next release to check if it's something added recently?

comment:5 by raziel-, 3 months ago

@lephilousophe

Actually, you are right..i picked the wrong log in the beginning,
the second one is the correct one.

All of them look alike, all crash in base/plugin:741 in this FSListEmb() function.
Not matter how many engines are compiled in, as long as plumbers is there too.

Sorry for the mixup

comment:6 by raziel-, 3 months ago

@lephilousophe

Buildbot builds:
The "master" build from today gives me an error window telling me:

Required GLSL version 100 is not supported (9 maximum)!

After that it quits gracefully.

The "stable" build from today runs and shows no signs of the crash :-/

comment:7 by lephilousophe, 3 months ago

Hum...
So two things:

  • when bissecting you can start at branching point for next release
  • could you create a separate bug report for this error with a full debug log and assign it to me?

It seems the GLSL version parsing fails.

comment:8 by raziel-, 3 months ago

@lephilousophe

https://bugs.scummvm.org/ticket/13654

No idea how to assign you to it

comment:9 by raziel-, 3 months ago

Component: Engine: Plumbers--Other--
Keywords: groovie plumbers added
Summary: BASE: Detection: plumbers.plugin produce crash on adding games and start of gamesBASE: Detection: Engine (groovie, plumbers) plugins produce crash on adding and start of games

Added another reproducable crash (the very same), this time with groovie engine

comment:10 by raziel-, 3 months ago

I didn't find any more engines that causes this.

I compiled a full build (excluding groovie and plumbers) and the crash is gone.
I have to add that i did the tests with --disable-detection-full, so no non-ready engines have been compiled in (e.g. Wintermute3D).
There is a chance that those engines also cause this behaviour, but i rather not test unfinished ones to not clutter the bug item with unneeded information.

If someone has some insight into this, could you please check if there are similarities between those excluded engines which might cause this?

I'm off to work again, so take your time.
And please throw anything at me i can test or need to try, i'll get back to it once i'm home again.

Thank you very much

Note: See TracTickets for help on using tickets.