I have a program with one thread waiting on Socket.select call and another thread doing stuff causing GC to kick in. When this happens, Socket.select fails with "Interrupted system call". I found referenced to some old discussion and bug, but it seems to be long gone (I output SA_RESTART in my program to make sure it is defined). My program is attached below - it is happening on DMD 2.063 on Linux.
import std.socket; import std.stdio; import core.thread; import core.sys.posix.signal; void serverfunc () { Socket listener = new TcpSocket (); listener.bind (new InternetAddress(1234)); listener.listen(1); SocketSet set = new SocketSet( 1 ); Socket.select( set, null, null ); writefln( "last error: %s", lastSocketError() ); } void clientfunc () { while( true ) new Object(); } void main () { writefln( "sa: %d", SA_RESTART ); (new Thread (&serverfunc)).start(); (new Thread (&clientfunc)).start(); } If I disable GC the problem does not occur. Any idea how to solve this? -- Marek Janukowicz