Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

SoapySDRServer dies with SIGPIPE when terminating client #45

Closed
daniel-sch opened this issue Aug 20, 2018 · 0 comments
Closed

SoapySDRServer dies with SIGPIPE when terminating client #45

daniel-sch opened this issue Aug 20, 2018 · 0 comments

Comments

@daniel-sch
Copy link
Contributor

I use SoapyRemote to connect a GNU Radio flow graph to an USRP X310. When using high sampling rates (i.e. 40MHz), SoapySDRServer will terminate after terminating the GNU Radio flow graph with the output SoapyServerListener::handlerLoop() FAIL: (sometimes there are additional error messages).

Running the server in gdb gives the following debug information:

SoapyServerListener::handlerLoop() FAIL: SoapyServerListener::handlerLoop() FAIL: SoapyRPCUnpacker::recv(header) FAIL:
SoapyRPCUnpacker::recv(header) FAIL:
[Thread 0x7fffddd94700 (LWP 28118) exited]

Thread 37 "SoapySDRServer" received signal SIGPIPE, Broken pipe.
[Switching to Thread 0x7fffc4ff9700 (LWP 28127)]
0x00007ffff70c99ff in __libc_send (fd=7, buf=0x7fffbc000b60, n=94, flags=flags@entry=0) at ../sysdeps/unix/sysv/linux/x86_64/send.c:26
26      ../sysdeps/unix/sysv/linux/x86_64/send.c: No such file or directory.
(gdb) bt
#0  0x00007ffff70c99ff in __libc_send (fd=7, buf=0x7fffbc000b60, n=94, flags=flags@entry=0) at ../sysdeps/unix/sysv/linux/x86_64/send.c:26
#1  0x0000000000417c75 in SoapyRPCSocket::send (this=0x6420d0, buf=<optimized out>, len=<optimized out>, flags=flags@entry=0) at /home/FE/schaeufele/pybombs/default/src/soapyremote/common/SoapyRPCSocket.cpp:418
#2  0x000000000041a761 in SoapyRPCPacker::send (this=this@entry=0x7fffc4ff88b0) at /home/FE/schaeufele/pybombs/default/src/soapyremote/common/SoapyRPCPacker.cpp:55
#3  0x0000000000414979 in SoapyRPCPacker::operator() (this=0x7fffc4ff88b0) at /home/FE/schaeufele/pybombs/default/src/soapyremote/common/SoapyRPCPacker.hpp:28
#4  handleLogMessage (logLevel=<optimized out>, message=<optimized out>) at /home/FE/schaeufele/pybombs/default/src/soapyremote/server/LogForwarding.cpp:33
#5  0x00007ffff7bc69d5 in SoapySDR_vlogf(SoapySDRLogLevel, const char *, typedef __va_list_tag __va_list_tag *) (logLevel=SOAPY_SDR_ERROR, format=<optimized out>, argList=argList@entry=0x7fffc4ff8960)
    at /home/FE/schaeufele/pybombs/default/src/soapysdr/lib/LoggerC.cpp:101
#6  0x00007ffff7ba8995 in SoapySDR::vlogf (logLevel=<optimized out>, format=<optimized out>, argList=argList@entry=0x7fffc4ff8960) at /home/FE/schaeufele/pybombs/default/src/soapysdr/lib/Logger.cpp:13
#7  0x000000000041e324 in SoapySDR::logf (logLevel=logLevel@entry=SOAPY_SDR_ERROR, format=format@entry=0x427678 "StreamEndpoint::releaseSend(), FAILED %s") at /home/FE/schaeufele/pybombs/default/include/SoapySDR/Logger.hpp:47
#8  0x000000000041eb21 in SoapyStreamEndpoint::releaseSend (this=0x7fffec472d50, handle=<optimized out>, numElemsOrErr=numElemsOrErr@entry=357, flags=@0x7fffc4ff8a98: 36, timeNs=<optimized out>)
    at /home/FE/schaeufele/pybombs/default/src/soapyremote/common/SoapyStreamEndpoint.cpp:336
#9  0x00000000004151c7 in ServerStreamData::sendEndpointWork (this=0x7fffec472ad8) at /home/FE/schaeufele/pybombs/default/src/soapyremote/server/ServerStreamData.cpp:216
#10 0x00007ffff78adc80 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#11 0x00007ffff70c06ba in start_thread (arg=0x7fffc4ff9700) at pthread_create.c:333
#12 0x00007ffff6df641d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

I use UHD-3.13 and otherwise the newest versions available in PyBOMBS.

Adding the MSG_NOSIGNAL flag to the send call seems to fix this issue, I will add a PR shortly.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant