[Hamlib-developer] Broken pipe causes crash after closing flrig
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: Philip R. <gm...@bt...> - 2024-07-30 13:20:44
|
I have a situation where my app crashes if I close flrig before I close my app. I was deliberately doing this as i wanted to switch to native hamlib access of the rig (IC-7300) for testing a new feature in my app. In my app I poll hamlib and thus flrig for frequency, mode etc every second. When I do this after closing flrig, I get the following stack: Thread 34 "zzalog" received signal SIGPIPE, Broken pipe. [Switching to Thread 0x7ffff0b1d6c0 (LWP 1061563)] __GI___libc_write (nbytes=236, buf=0x7ffff0b185d0, fd=12) at ../sysdeps/unix/sysv/linux/write.c:26 26 ../sysdeps/unix/sysv/linux/write.c: No such file or directory. (gdb) bt #0 __GI___libc_write (nbytes=236, buf=0x7ffff0b185d0, fd=12) at ../sysdeps/unix/sysv/linux/write.c:26 #1 __GI___libc_write (fd=12, buf=0x7ffff0b185d0, nbytes=236) at ../sysdeps/unix/sysv/linux/write.c:24 #2 0x00007ffff62caba5 in write_block (p=p@entry=0x7fffdc008358, txbuffer=txbuffer@entry=0x7ffff0b185d0 "POST /RPC2 HTTP/1.1\r\nUser-Agent: XMLRPC++ 0.8\r\nHost: 127.0.0.1:12345\r\nContent-type: text/xml\r\nContent-length: 119\r\n\r\n<?xml version=\"1.0\"?>\r\n<?clientid=\"hamlib(40601)\"?>\r\n<methodCall><methodName>rig.ge"..., count=236) at iofunc.c:1112 #3 0x00007ffff631aef1 in write_transaction (xml_len=<optimized out>, xml=0x7ffff0b185d0 "POST /RPC2 HTTP/1.1\r\nUser-Agent: XMLRPC++ 0.8\r\nHost: 127.0.0.1:12345\r\nContent-type: text/xml\r\nContent-length: 119\r\n\r\n<?xml version=\"1.0\"?>\r\n<?clientid=\"hamlib(40601)\"?>\r\n<methodCall><methodName>rig.ge"..., rig=0x7fffdc000b70) at flrig.c:545 #4 flrig_transaction (rig=rig@entry=0x7fffdc000b70, cmd=cmd@entry=0x7ffff649a6e5 "rig.get_vfoA", cmd_arg=cmd_arg@entry=0x0, value=value@entry=0x7ffff0b1c620 "", value_len=value_len@entry=128) at flrig.c:583 #5 0x00007ffff631e047 in flrig_get_freq (rig=0x7fffdc000b70, vfo=<optimized out>, freq=0x7ffff0b1c7f8) at flrig.c:1221 #6 0x00007ffff62adb6b in rig_get_freq --Type <RET> for more, q to quit, c to continue without paging-- (rig=0x7fffdc000b70, vfo=1, freq=0x7ffff0b1c7f8) at rig.c:2571 #7 0x0000555555767c06 in rig_if::th_read_values() (this=0x55555a3ea1d0) at src/rig_if.cpp:348 #8 0x0000555555767b55 in rig_if::th_run_rig(rig_if*) (that=0x55555a3ea1d0) at src/rig_if.cpp:333 Is it possible to catch the broken pipe and return an appropriate error code in "rig_get_freq" (and similar calls)? Phil GM3ZZA |