Opened 2 years ago
Closed 8 months ago
#13603 closed defect (invalid)
BASE: Detection: Engine (groovie, plumbers) plugins produce crash on adding and start of games
Reported by: | raziel- | Owned by: | raziel- |
---|---|---|---|
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 (2)
Change History (17)
comment:1 by , 2 years ago
comment:2 by , 2 years ago
Component: | Common → Engine: 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 , 2 years 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 , 2 years 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?
by , 2 years ago
Attachment: | Crashlog_scummvm_2022-07-03_17-57-16.txt added |
---|
comment:5 by , 2 years 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 , 2 years 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 , 2 years 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 , 2 years ago
comment:9 by , 2 years ago
Component: | Engine: Plumbers → --Other-- |
---|---|
Keywords: | groovie plumbers added |
Summary: | BASE: Detection: plumbers.plugin produce crash on adding games and start of games → BASE: 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 , 2 years 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
comment:13 by , 19 months ago
@digitall
Short test with agi, groovie and plumbers engine in detection.plugin shows no more crashes.
Will do a full engines build/test later (much later...in May actually), but I guess you can close this.
If I get the behaviour back I'll reopen, if that is OK?
by , 19 months ago
Attachment: | Crashlog_scummvm_2023-04-21_08-26-06.txt added |
---|
comment:15 by , 8 months ago
Owner: | set to |
---|---|
Resolution: | → invalid |
Status: | new → closed |
Bug is gone, the exit crash stems from another engine
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?