[Bug 52131] wine-mono + RMS Express: HF Channel Selection Browser crashes

WineHQ Bugzilla wine-bugs at winehq.org
Thu Dec 9 11:57:22 CST 2021


https://bugs.winehq.org/show_bug.cgi?id=52131

--- Comment #27 from Eric <eric.wheez at gmail.com> ---
I believe I've solved the mystery of where the crash is coming from and have an
idea for maybe how to fix it for future cases like this, though I'm not
entirely certain since I'm not very savvy with programming yet.

Comparing RMS Channels.dat to this Gateway Channels database:
https://www.winlink.org/content/gateway_channels (select ARDOP),
I found that the 9W2RUT station's input frequency is probably a typo in RMS
Channels.dat (since the Gateway Channels database link says that 9W2RUT is
supposed to be on 7,093.000 KHz)

Station | Freq Database | Our Frequency | RMS Channels.dat -> dvoa.dll (as sent
from RMS)
        |     (KHz)     |    (MHz)      |        (Hz)      ->        (MHz)
------------------------------------------------------------------------------------
DA5UDI  | 7,051.400 KHz | 7.051400 MHz  | 7051400          -> "Freqs": [ 7.05]
(works)
test    |      n/a      | 0.054999 MHz  |   54999          -> "Freqs": [ 0.05]
(Delphi CRASH!)
9W2RUT  | 7,093.000 KHz | 0.007093 MHz  |    7093 (TYPO!)  -> "Freqs": [ 0.01]
(Delphi CRASH!)

I got in contact with the author of D-VOACAP (dvoa.dll) to see if these crashes
on low-value frequency inputs were normal.
He let me know that dvoa.dll is not supposed to handle frequencies below 2 MHz:
"The VOACAP algorithm works in the frequency range from 2 MHz to 30 MHz. It has
poor accuracy below 4 MHz and falls apart completely below 2 MHz. Please see
this paper for the details."
https://github.com/VE3NEA/DVOACAP/issues/3

I also learned but looking through the dvoa.dll code that these Delphi
exceptions are normal behavior - the author has dvoa.dll print an error message
if frequencies are too low.
https://github.com/VE3NEA/DVOACAP/blob/6032495873534dec33b124b722c9a67071af9ee1/DVoaDll/dvoa.dpr#L59
I'm guessing here but I believe that this programmer-generated error then might
be seen by wine-mono as 0x0eedfade and then crashes wine-mono.

Knowing all this, I think I'll reach out to the RMS Express devs to have them
fix the typo in the 9W2RUT station in RMS Channels.dat, but I'll also suggest
to them some exception handling in RMS Express to warn users about calculating
frequencies below 2 MHz. That should fix the RMS Express side.

I think it's useful to know that wine-mono crashes when Delphi/Pascal programs
throw programmer-generated error messages though.  Maybe telling wine-mono to
ignore 0x0eedfade Delphi exceptions could prevent future wine-mono crashes in
these cases?

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list