Bug #395
closedCHIRP doesn't tolerate failure during export
100%
Description
To repro:
- connect D72
- read from radio
- wait for all channels to be read
- export
- progress dialog goes to about 4/5ths, then stalls
- exit progress dialog after several minutes
- no file generated, no errors shown (but in log)
20130102
Files
Updated by Tom Hayward almost 12 years ago
Cannot reproduce. Given steps worked fine.
Updated by Sander Pool almost 12 years ago
Thanks for trying to reproduce. A bit odd that you're not seeing this problem but not unexpected. Getting field problems reproduced by developers is one of the most challenging aspects of testing. And the one that chases QA people away.
So what about the error in the log? Am I really stuck having to fix this myself?
Updated by Sander Pool almost 12 years ago
I should add that you do not have the same memory contents in your D72 as what I have. Looking at the log something about the memory contents made it break.
Doing 1
Doing 2
PC->RADIO: ME 800
D7->PC: ME 800,0145050000,ΓΏ,0,0,0,0,0,0,08,08,000,0,00600000,0,0000000000,0,.
-- Exception: --
Traceback (most recent call last):
File "chirpui\editorset.pyo", line 316, in do_export
File "chirpui\editorset.pyo", line 214, in do_import_locked
File "chirpui\importdialog.pyo", line 610, in __init_
File "chirpui\importdialog.pyo", line 525, in populate_list
File "chirp\kenwood_live.pyo", line 174, in get_memory
File "chirp\kenwood_live.pyo", line 902, in _parse_mem_spec
ValueError: invalid literal for int() with base 16: '\xff'¶
Traceback (most recent call last):
File "chirpui\mainapp.pyo", line 1244, in mh
File "chirpui\mainapp.pyo", line 1036, in do_export
File "chirpui\editorset.pyo", line 321, in do_export
File "chirpui\common.pyo", line 249, in show_error
TypeError: parent should be a GtkWindow or None
Closing 0
RadioThread exiting
Updated by Sander Pool almost 12 years ago
- File ExportError.mc4 ExportError.mc4 added
sorry for the quick succession of updates but I'd really like chirp to work for me so here's the .mc4 file in case you want to truly reproduce this problem.
Updated by Dan Smith almost 12 years ago
Yeah, it's definitely something in your radio. What is stored in channel #800? The radio is clearly returning a non-printable (not even ASCII) character instead of one of the fields. I can definitely throw something in to avoid that from crashing the export, but AFAIK, this isn't supposed to be possible. I guess we should at least handle this somehow more gracefully...
If you could look at what is in #800 and see if it looks problematic that would be help.
Updated by Tom Hayward almost 12 years ago
Thanks, I was just going to request your mcp file. Let me experiment with this.
Updated by Sander Pool almost 12 years ago
Thanks Tom. Removing item 800 using MCP-4 allowed the export to complete. This was not a relevant channel so it was no problem to delete it. Perhaps when you or others have time you could determine why entry 800 caused this problem and if that would be recoverable in a different way than just hanging. Luckily the log had great information!
Updated by Dan Smith almost 12 years ago
- Subject changed from D72 export never finishes to CHIRP doesn't tolerate failure during export
Changing the title to represent the fact that chirp shouldn't just hang if an export fails. The regular editor handles failed memory fetches, and export should too.
Updated by Tom Hayward almost 12 years ago
- Status changed from New to Feedback
- Assignee set to Tom Hayward
- Target version set to 0.2.4
- % Done changed from 0 to 100
- Platform changed from Windows to All
Sander, will you test today's daily and report your experience?
Updated by Sander Pool almost 12 years ago
Tom, I'm using version daily-20130107 and it's not working at all it seems. I attempt to read from the radio and nothing seems to happen. The GUI remains empty. When I attempt to load again it says the port is in use so it appears there is still a thread running that has the port open. I used 'live' mode.
I waited a minute or two which I think should be sufficient to load all 1000 memories. I don't think it's really reading anything.
Clone mode reads all memories just fine, including the corrupted entry that caused this bug to be logged in the first place.
Updated by Tom Hayward almost 12 years ago
If it's reading something, it will say so in the debug log.
There have been a number of D72 changes lately (like addition of the clone mode driver), so it would simplify things greatly if you tested this issue with the version released immediately after I submitted this fix: http://trac.chirp.danplanet.com/chirp_daily/daily-20130104. All I did was fix the error reporting, so you would see an error message instead of a hang. Without a debug log I can't determine what problem you're seeing now, but I suspect it's different than the issue you originally reported.
I added the clone mode driver because I know you prefer it over the live mode driver. If you're going to use the clone mode driver, please be very observant because I think there are some bugs. Open issues for these bugs if you find them.
Updated by Sander Pool almost 12 years ago
OK, I went back to the indicated build. Generally developers insist on always using the latest build so that's what I did.
Data was read fine from the radio. Item 800 was listed as 'error' even though most fields should have been readable. MCP-4A happily reads and writes this memory item so I'm curious what's so special about it. Line 800 was not exported.
Updated by Sander Pool almost 12 years ago
forgot log
Updated by Tom Hayward almost 12 years ago
- Status changed from Feedback to Closed
Excellent, the error is being detected and skipped as it should be. The reason Chirp treats the whole memory as an error is because if one field is corrupted, we assume the rest of the fields are also suspect. Notice that the Kenwood software leaves the step field blank because it can't read it properly. Chirp tries to take a more conservative approach to errors, reporting the error rather than quietly ignoring it.
It sounds like whatever issue you were having earlier was something introduced after 20130104. If you can reproduce this, please report it as another issue.