[PD-dev] SIGPIPE on iemnet's tcpserver

IOhannes m zmoelnig zmoelnig at iem.at
Tue Jul 2 14:18:53 CEST 2013


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 2013-07-02 13:39, Antoine Villeret wrote:
> 
> I realize that with iemnet's version of tcpclient/tcpserver, if two
> client connect at the same time to server, only on receive data
> not the other,

that's a different bug, please report it.

(please also report *this* bug in the sourceforge bugtracker for
"pure-data")


> so I put a timeout to disconnect the client if no answer was
> received in a certain time and then reconnect
> 
> i first make this with iemnet's tcpserver and I got a SIGPIPE on
> the server side (see my previous post) while I got SIGSEGV on the
> client side, here is the gdb backtrace :
> 
> [New Thread 0x7fff7bfff700 (LWP 4478)]
> 
> Program received signal SIGSEGV, Segmentation fault. [Switching to
> Thread 0x7fffc8ff9700 (LWP 4477)] 0x0000000000472963 in clock_set
> () (gdb) watchdog: signaling pd...

tip: when running Pd in a debugger, always use "-nrt".

general remark: to get a backtrace, please run "bt" in the debugger
(after the crash).

> I think in the server side a signal(SIGPIPE, SIG_IGN); could help
> but I don't know where to put it (in tcpserver.c ? in 
> iemlnet_sender.c or somewhere else ?)

i don't think this is a good solution.
i would prefer something along the lines of "setsockopt(SO_NOSIGPIPE)"
and/or "send(..., MSG_NOSIGNAL)" - a solution that does not have
side-effects on the entire Pd.

> 
> also I tested it with the mrpeach's version, it doesn't crash but
> the GUI hangs gdb doesn't tell anything, it continue to show thread
> creation and exiting
> 
> also I'm using iemnet's first because it has a [port( method to
> change the binding port on the fly and I made a rebinding routing
> to choose an available port in a certain range both in server and
> in client side to prenvent connection error if port is still used
> after a crash for example
> 
> I don't know how to go further with this, But I really need a
> reliable server for some project and for now I just have an
> headache :-) please tell me how i can help fixing this (and please
> note that I don't know anything on tcp communication...)

btw, my experimental repository for iemnet is at [1].
i added the MSG_NOSIGNAL flag (currently this is linux only), and the
server does not crash anymore, but the clients still do.

fgmasdr
IOhannes



[1] https://github.com/umlaeute/pd-iemnet



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Icedove - http://www.enigmail.net/

iEYEARECAAYFAlHSxSoACgkQkX2Xpv6ydvRiAwCgrn20fLBsSDaDxDODerVSEGiw
AG0An0u5PY21NryZawi/JdH3U02NOYAe
=mQ4d
-----END PGP SIGNATURE-----



More information about the Pd-dev mailing list