Freezes are grouped by FoxSDR's own code, so unrelated freezes no longer merge. A frozen window is almost always sitting in one of a few Windows waiting routines, whatever it is actually waiting for, and FoxSDR grouped freeze reports by that routine. Freezes with different causes therefore looked like one, and because FoxSDR sends one report per group per day, the second kind of freeze on a computer in a day was kept on that computer and never reached us. A freeze report is now grouped by the first point in FoxSDR's own code that the frozen thread was in. Nothing new is sent. A report written by an earlier version keeps the grouping it was written with, so a freeze that was already sent in the last 24 hours may be sent once more after you update, inside the same limit of five reports a day. Checked in FoxSDR's tests with a real watchdog and real blocked threads, not on a freeze in a real session.
One failure of the radio search is now one report, so a single failure no longer uses up to three of the day's five report uploads. Looking for radios runs in a small separate process, so that a faulty driver cannot end your session. When that process died, up to three reports could be filed about the one death - its own, and up to two more from FoxSDR itself - and one driver that fails every time could use three of the five uploads a computer may send in a day on a fault the program had survived, leaving fewer for a real crash. The process's own report is now the one report, and it also says which search it was, which try it was, and that FoxSDR survived it. FoxSDR files a report of its own only for a death the process could not report itself, such as heap corruption, a driver ending the process itself, or a death before the process had set up its own report. No field is added to what is sent. Checked on Windows against the real program and test drivers that are made to fail; the same test now also passes in the Linux build.
A count of display stalls is added to the anonymous usage record. A display stall is a freeze where the window was waiting for the graphics driver rather than for FoxSDR: a monitor switched off, a graphics-driver reset, a remote-desktop session reconnecting. The report of such a freeze is kept on your computer and still never leaves it. What is added to the usage record is how many there were - a bare number, with no stack, no driver name and no time of day. It is counted only while both Usage reporting and Diagnostics are on; with either off nothing is counted. So that a freeze you end from the taskbar is still counted, the number is kept in a small file named telemetry-stalls beside config.json, together with your random install identifier. It is taken off once the server has accepted a record carrying it, and the file is deleted when you switch Usage reporting off. The "What exactly is sent?" window, PRIVACY.md and the README list it. Checked in FoxSDR's tests with a stall that is staged and classified as the display's, on a real watchdog; not seen on a real graphics-driver stall.
The diagnostics describe the radio actually in use at the moment of a fault, and a bug report now carries the end of the previous session's log and a list of the report files on the computer. The description of what the receiver was doing in a report or in Copy diagnostics (source, sample rate, mode, radio model, loaded plugins) was refreshed once a second, so a fault in the first second after you opened a radio described the radio before it. It is now refreshed on every frame and at the moment any of those things changes. A new patch-radios line lists the radios the patch page is running, by driver kind only and never a name, a serial number or an address; it is in the report file on your computer and in the bundle, and is not part of the report FoxSDR sends automatically. The bundle, which is what Copy diagnostics gives you and what the REPORT A BUG page attaches, now also ends with the last lines (at most 80) of the previous session's log, and one line for each of the ten newest crash or freeze reports on the computer: what it was, how long ago, which version, its grouping signature, and what became of sending it. No stack, no log lines and no file names come from those reports, and every line goes through the same scrub as the rest of the log. With Diagnostics off neither section is added and nothing is read for it, and neither is part of the automatic crash report. PRIVACY.md lists the new fields. Checked in FoxSDR's tests with log and report files built by hand in the shapes FoxSDR writes, not against a real freeze followed by a real restart, and whether this explains the three crash reports that prompted it is not known.
Linux: line-level debug information is now kept on our side, so a Linux crash can be traced to a line. Linux builds were compiled without it, so a Linux crash report could name the function but never the line. They are now compiled with it. It does not ship: after the build, FoxSDR's build script cuts it out of the program into a separate file that we keep, leaving the program's function names as they were and adding only a short note naming that file, and a check in our automated build reports a failure if the program still carries any. The Linux downloads are therefore meant to be the size they were, and nothing about how FoxSDR runs is meant to change. Since these notes were first written the Linux build has run in our automated build, on x64 and on ARM64: it compiled, all 273 tests passed, the check found no debug information left in the program, and the downloads came out within 1% of the size of 0.99.61's (the x64 tarball is 7,881,977 bytes against 7,818,134). Still not verified: that adding debug information leaves the program's code unchanged was compared on a sample of FoxSDR's source files with one compiler, not on the downloads themselves; and no Linux crash has yet been traced to a line with the information we now keep.
SHA-256 of foxsdr-setup-0.99.62.exe:
c09adf75e23298acba31bab3ddabb2caac3e103f999378a1b6526dd12c24034a
SHA-256 of FoxSDR-0.99.62-x86_64.AppImage:
03c7b53c952cfe243d3370d284170f5ec39359f0df1b08a30b049dd90ac6f0f7
SHA-256 of foxsdr-0.99.62-linux-x64.tar.gz:
d4f2bd3c962922383a49846dc1da2983616bf85e9dfba1fc91f3a94a359b8884
SHA-256 of FoxSDR-0.99.62-aarch64.AppImage:
b979b69d6b8a2faa74e451c58d21f588af034c0ff8012b2d945fb787a69946df
SHA-256 of foxsdr-0.99.62-linux-arm64.tar.gz:
8a961c1ebed7ee7e25a6d0276f1f72189f38887aff9de187de9ffacdb3c1fcdb