Skip to content
New issue

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

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

Already on GitHub? Sign in 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.

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

No branches or pull requests

1 participant