Closed WheezyE closed 1 year ago
Same behavior with Box86 with Dynarec v0.2.9 2b247838 built on Jan 8 2023 01:14:47
+ wine-7.1
.
Ah ok, tested this on Linux Mint x64 and it crashes in wine-8.0-rc4
(latest)
This might be a bug in wine or wine-mono
I believe I've narrowed this down to a crash in wine-mono.
WINE_MONO_TRACE=x WINE_MONO_HIDETYPES=1 wine RMS\ Trimode.exe 2>&1 | tee trimode3.log
...
[00000024:] EXCEPTION handling: System.FormatException: Input string was not in a correct format.
[00000024:] EXCEPTION handling: System.InvalidCastException: Conversion from string "0.000" to type 'Integer' is not valid.
0060:fixme:nsi:ipv6_forward_enumerate_all not implemented
0060:fixme:nsi:ipv6_forward_enumerate_all not implemented
Pictured: Right before clicking Update - right before the crash
Pictured: Right after clicking Update - right after the crash
Alternatively, if I run RMS Trimode again, but just close the "Channel Settings" window (don't hit "Update"), then RMS Trimode will run without crashing (it just won't do anything because it doesn't have any settings defined for frequencies to monitor).
Since the Channel Settings window has frequency fields that default to "0.000", and since the wine-mono error has to do with chars not converting to ints, I thought maybe this was a glitch caused by the RMS Trimode devs having set these default fields as strings instead of integers. I decided to try putting 1
integer into all of the "0.000" fields to get rid of any accidental chars in there.
I hit update and this time RMS Trimode didn't crash.
I went back to the Channel Settings window and all the 1
integers had been auto-populated with "1.000".
I hit update again and then things crashed again! This time the wine-mono error messages said:
[00000024:] EXCEPTION handling: System.FormatException: Input string was not in a correct format.
[00000024:] EXCEPTION handling: System.InvalidCastException: Conversion from string "1.000" to type 'Integer' is not valid.
I then tried running RMS Trimode again and inputting 1.000
into each field before hitting update and the program crashed with the same error message again:
[00000024:] EXCEPTION handling: System.FormatException: Input string was not in a correct format.
[00000024:] EXCEPTION handling: System.InvalidCastException: Conversion from string "1.000" to type 'Integer' is not valid.
not a RMS bug?
Type conversion handling for the same value you have in a text box..
While it might be a .net issue I would be surprised it wasn't found elsewhere first?
.NET normally runs RMS Trimode code for Windows. We're running RMS Trimode on wine-mono though instead of .NET. Wine-mono is an open-source engine that has been written by scratch from the ground-up to run .NET programs. My guess would be that RMS Trimode's Channel Settings menu occasionally tries to convert strings to ints and that the .NET engine has been allowing and handling these sort-of code faux pas but wine-mono doesn't have special handling for these cases.
One solution would be to ask madewokherd if they might consider implementing some kind of handling for string-to-int kludges in wine-mono. Probably the better solution though might be to ask the RMS Trimode dev if they could check the code for the Channel Settings browser to see if the program is setting text boxes to strings on accident (instead of to other values).
I'm not entirely sure about this being an int problem though since any number I enter with trailing zeros (EDIT: any decimal number) seems to crash too. So I might still need madewokherd's help to figure out what's going on here.
I'll see about asking the RMS Trimode dev tomorrow
More detailed wine-mono traces for these exceptions:
Phil, the trimode dev, fixed the type cast issue in RMS Trimode. This crash no-longer occurs. I'll close this ticket when the patch is worked into the official Trimode.
This fix has been incorporated into RMS Trimode 1.3.50.0, which is available on the Winlink sysop downloads page as-of today.
Patch notes for this release notably include:
- Fix a bug in Channels converting a decimal frequency string to an integer.
Winelink has been updated with commit 74ad317 to install RMS SysOp programs, including TriMode
Crashes after hitting the Update button. Not sure if it's wine, wine-mono, or box86 yet.
Using
BOX86_DYNAREC_SAFEMMAP=1
(or 2) doesn't help. UsingBOX86_DYNAREC_BIGBLOCK=1
also doesn't change anything.