SteamGridDB / steam-rom-manager

The bulk game importer and artwork manager for Steam!
https://steamgriddb.github.io/steam-rom-manager/
GNU General Public License v3.0
1.9k stars 121 forks source link

Steam Rom Manager on Steam Deck hangs when using custom parser which has "romsDirectory" set to external SD card #542

Closed rybandrei2014 closed 1 year ago

rybandrei2014 commented 1 year ago

Hi, following custom parser causes Steam Rom Manager to hang during parsing. I did some tests and found out that it is because "romsDirectory" points to external SD card on Steam Deck - "/run/media/mmcblk0p1/Windows". If I change "romsDirectory" to point to internal SSD drive it works - "/home/deck/Games/Windows". Here is a json of such configuration:

{
"parserType": "Glob",
"configTitle": "Windows - SD",
"steamCategory": "${Windows}",
"steamDirectory": "/home/deck/.steam/steam",
"romDirectory": "/run/media/mmcblk0p1/Windows",
"executableArgs": "",
"executableModifier": "\"${exePath}\"",
"startInDirectory": "",
"titleModifier": "${fuzzyTitle}",
"imageProviders": [
"SteamGridDB"
],
"onlineImageQueries": "${${fuzzyTitle}}",
"imagePool": "${fuzzyTitle}",
"userAccounts": {
"specifiedAccounts": ""
},
"executable": {
"path": "",
"shortcutPassthrough": false,
"appendArgsToExecutable": true
},
"parserInputs": {
"glob": "${title}/**/start@(.lnk|.exe)"
},
"titleFromVariable": {
"limitToGroups": "",
"caseInsensitiveVariables": false,
"skipFileIfVariableWasNotFound": false,
"tryToMatchTitle": false
},
"fuzzyMatch": {
"replaceDiacritics": true,
"removeCharacters": true,
"removeBrackets": true
},
"controllers": {
"ps4": null,
"ps5": null,
"xbox360": null,
"xboxone": null,
"switch_joycon_left": null,
"switch_joycon_right": null,
"switch_pro": null,
"neptune": null
},
"imageProviderAPIs": {
"SteamGridDB": {
"nsfw": false,
"humor": false,
"styles": [],
"stylesHero": [],
"stylesLogo": [],
"stylesIcon": [],
"imageMotionTypes": [
"static"
]
}
},
"parserId": "168225048335988191",
"version": 15,
"defaultImage": {
"long": "",
"tall": "",
"hero": "",
"logo": "",
"icon": ""
},
"localImages": {
"long": "/run/media/mmcblk0p1/SteamGrid/${fuzzyTitle}/grid.@(png|PNG|jpg|JPG|jpeg|JPEG|webp|WEBP)",
"tall": "/run/media/mmcblk0p1/SteamGrid/${fuzzyTitle}/grid-tall.@(png|PNG|jpg|JPG|jpeg|JPEG|webp|WEBP)",
"hero": "/run/media/mmcblk0p1/SteamGrid/${fuzzyTitle}/hero.@(png|PNG|jpg|JPG|jpeg|JPEG|webp|WEBP)",
"logo": "/run/media/mmcblk0p1/SteamGrid/${fuzzyTitle}/logo.@(png|PNG|jpg|JPG|jpeg|JPEG|webp|WEBP)",
"icon": "/run/media/mmcblk0p1/SteamGrid/${fuzzyTitle}/icon.@(png|PNG|jpg|JPG|jpeg|JPEG|webp|WEBP)"
}
}

Before update it worked flawlessly

rybandrei2014 commented 1 year ago

It looks like that I fixed it, it was caused by parsers blob "${title}/**/start@(.lnk|.exe)" that searches recursively for start@(.lnk|.exe) file. Some games caused some memory overflow during that search, as they had massive directory structure due to wine prefixes

cbartondock commented 1 year ago

Ah yeah much better to use braced sets ${./,/,/*/} etc to put a limit on how deep it searches.