hmatuschek / qdmr

A GUI application for configuring and programming cheap DMR radios under Linux and MacOS X.
https://dm3mat.darc.de/qdmr/
GNU General Public License v3.0
223 stars 46 forks source link

SegFault writing to 878UVII+ #482

Closed PeterSprague closed 1 month ago

PeterSprague commented 1 month ago

Something in my latest codeplugs causes QDMR to seg fault again when trying to write to the radio. On a fresh source build from master.

Using dmrconf to isolate and display errors: $ dmrconf write AnyTone_D878UVII+_Sept-28-2024-0924_seg-fault-fixes.yaml Warning in cli/writecodeplug.cc@60: Verification Issue: Warn: In : The support for this radio is still under development. Some features may sill be missing or are not well tested. [======================== ] 49% FATAL in lib/dfufile.cc@665: Cannot resolve offset 1640640h.

Comparing the last know working codeplug.yaml to latest with seg fault doesn't show anything that pops out to my untrained eyes.

AnyTone_D878UVII+_Sept-29-2024-1315_seg-fault-fixes.txt AnyTone_D878UVII+_Sept-26-2024-0858_uploads.txt

PeterSprague commented 1 month ago

Here is the next codeplug version after successful upload that started Seg Faulting:

AnyTone_D878UVII+_Sept-26-2024-0927_seg_fault.txt

hmatuschek commented 1 month ago

Can reproduce it:

What I did using dmrconf as I do not own a D878UVII+:

dmrconf --verbose encode --radio=d878uv2 AnyTone_D878UVII+_Sept-26-2024-0927_seg_fault.txt test.dfu

This tries to encode the given YAML codeplug into a binary one that can be written to the device (codeplug format is the one for the D878UVII). If there is an encoding issue, this should trigger it.

I've created a new branch to fix this issue, so for testing it use the branch 482-segfault-writing-too-many-sms.

hmatuschek commented 1 month ago

Should be fixed in 482-segfault-writing-too-many-sms.

PeterSprague commented 1 month ago

AnyTone_D878UVII+_Sept-29-2024-1315_seg-fault-fixes.txt -- crashes (too many SMS, there can only be 100).

I haven't done anything with sms, so that must be getting generated by qdmr. I do find quirky things happen when I reopen a codeplug like channels getting all changed to default id when I had made a specific choice previously.

"AnyTone_D878UVII+_Sept-26-2024-0927_seg_fault.txt -- also encodes okay. Can you give more details on that issue?"

Retested with dmrconf - it uploads correctly.

Retested the rest of the codeplugs. Attached are the two closest where the seg fault started.

AnyTone_D878UVII+_Sept-26-2024-0927_uploads.txt AnyTone_D878UVII+_Sept-27-2024-1019_seg_fault.txt

Will build with branch and test. Thanks for the quick response

PeterSprague commented 1 month ago

Tested all the previous seg faulting codeplugs with new branch, all load and radio works with them.

Please let me know when this gets rolled into master, and I'll rebuild from master source.

Again, thanks for the quick response and fix

f4inu commented 1 month ago

@hmatuschek, is it possible to release v0.12.1 for this issue? Thanks!