MantisBT - Doomseeker
View Issue Details
0003695Doomseeker[All Projects] Bugpublic2019-08-01 17:012019-08-24 07:57
Pol M 
needs testingopen 
0003695: Ignoring a missing WADs dialog for a game with no in-game downloads breaks cmd arg resolution
Doomseeker treats missing WADs for games that don't have in-game downloads as a fatal error. The fatality of this error is checked during each step of the game client's argument resolution routine. Thus, any argument that is supposed to be added after the "-file" arguments will not be added to the list when a fatal error occurs.

Normally this is not an issue because a fatal error means that the game cannot be launched and thus the argument list built so-far is discarded anyway.

For games that have in-game downloads, such as Odamex, missing WADs are not a fatal error and will not break the arg resolution routine if user choses to "Ignore" this error. However, for reason forgotten, games that don't offer in-game downloads (Zandronum) can also have the missing WADs error "Ignored" and the game will happily launch. Of course, since the WADs were mandatory, the game will get stuck in the console complaining about them being missing.

However, the argument list after "Ignoriong" such error is built by the same routine that does the same "is a fatal error" checks. This means that the routine now breaks as soon as the "fatal error" occurs, but since we "Ignore" the "fatal error" now, the game will launch with an incomplete arg list.
1. Configure a custom parameter for Zandronum game client in the config box.
2. Find a Zandronum server where you don't have all the required WADs.
3. Try to join it. Missing WADs pop-up will appear.
4. Despite the WADs being mandatory, you can ignore the error.
5. Zandronum will launch, but the custom argument will not be present on its arguments list.
By "Ignoring" the error I mean pressing the "Ignore" button in the "WADs are missing" dialog box.

I think the argument list should be inspectable with 'ps' on Linux, but if you can't use that then a temporary qDebug() can be added to AppRunner::runExecutable() to print it out.

The problem is caused by BAIL_ON_ERROR() macro in GameClientRunner::createCommandLineArguments_default().
No tags attached.
Issue History
2019-08-01 17:01ZalewaNew Issue
2019-08-01 17:05ZalewaNote Added: 0020958
2019-08-01 18:15Pol MNote Added: 0020959
2019-08-01 18:15Pol MAssigned To => Pol M
2019-08-01 18:15Pol MStatusnew => assigned
2019-08-01 19:09WubTheCaptainNote Added: 0020960
2019-08-01 19:12ZalewaNote Added: 0020961
2019-08-01 19:27Pol MNote Added: 0020962
2019-08-01 19:28Pol MNote Edited: 0020962bug_revision_view_page.php?bugnote_id=20962#r12769
2019-08-09 06:33Blzut3Note Added: 0020963
2019-08-23 20:00Pol MNote Added: 0020986
2019-08-23 20:00Pol MStatusassigned => needs review
2019-08-24 07:56ZalewaNote Added: 0020989
2019-08-24 07:56ZalewaStatusneeds review => needs testing
2019-08-24 07:57ZalewaNote Edited: 0020989bug_revision_view_page.php?bugnote_id=20989#r12794

2019-08-01 17:05   
It can be contemplated if the "Ignore" button should be visible for games that will fail on missing WADs. I don't remember why this button is visible for plugins other than SRB2 and Odamex.

If "Ignore" button is to be kept in the way as it is now, the argument resolution routine must be made aware that missing WADs are not a fatal error when we're ignoring them.
Pol M   
2019-08-01 18:15   
I feel like there's no reason for the ignore button to exist in Zandronum (plus choco). I'll take this ticket and make the commits in the "default" branch.
I'm aware that this has a close relationship with the "internal-clients" branch.
2019-08-01 19:09   
Quote from Zalewa
However, for reason forgotten, games that don't offer in-game downloads (Zandronum) can also have the missing WADs error "Ignored" and the game will happily launch.

IIRC, there is a valid use case for this and I use it very often. If the missing WADs are only optional WADs, I don't have to uncheck each of those optional WADs before continuing.
2019-08-01 19:12   
Yes indeed I believe this was the actual reason, Wub. The "Ignore" button is indeed useful in this case. But as soon as there's a non-optional WAD missing the button may be allowed to disappear.
Pol M   
2019-08-01 19:27   
(edited on: 2019-08-01 19:28)
The menu does not even appear when the missing wads are all optional. That said, I can agree on the idea that if the menu has only optional files on it, for redundancy the button can be left enabled.

2019-08-09 06:33   
I could be misremembering but I believe the button predates Zandronum's optional wad support? Not that I have a problem with removing it, but in theory it's useful for engines that don't have a concept of optional files in the protocol. (Or servers that list non-critical files as required because the operator couldn't be bothered.)
Pol M   
2019-08-23 20:00   
2019-08-24 07:56   
(edited on: 2019-08-24 07:57)
Quote from Blzut3

I could be misremembering but I believe the button predates Zandronum's optional wad support?

Yes the button predates Zandronum's optional wad support. I think it was originally meant to allow joining Odamex servers where the game can just download the wads instead.

The PR is merged. For the time being the problem may be healed because the UI will no longer allow for it to be triggered. However, since the underlying cause is still there, we cannot be certain that it won't reemerge in the future (much like the SORT_GROUP column). Nevertheless, I will consider this as up for testing.