Mon 21 Feb 2005 12:57:26 PM UTC, comment #17:
Fixed in CVS 02/21/2005
|
Mon 21 Feb 2005 07:15:55 AM UTC, comment #16:
The last patch didn't contain my changes for the sendto function. The change is contained in this patch (kt-050221.patch).
There is no such option to prevent signals for the recv function.
|
Mon 21 Feb 2005 05:44:50 AM UTC, comment #15:
Patch works. Thx Klaus.
but I think the flag should be in the "sento" method too.
And what about recv ? May recv send SIGPIPE too? I guess so.
|
Sun 20 Feb 2005 09:46:18 AM UTC, comment #14:
I've attached a patch (kt-050220.patch) to fix this bug. Please try it to make sure it doesn't break the pnet build on an other system.
|
Sat 19 Feb 2005 04:32:51 PM UTC, comment #13:
i forgot to mention the change is in function ILSysIOSocketSend.
|
Sat 19 Feb 2005 04:13:30 PM UTC, comment #12:
try the following change in support/socket.c:
change
return (ILInt32)(send((int)(ILNativeInt)sockfd, msg, len, flags));
to
return (ILInt32)(send((int)(ILNativeInt)sockfd, msg, len, flags | MSG_NOSIGNAL));
this lets the function not to send a signal on error.
EPIPE will still be returned if an error occures.
|
Sat 19 Feb 2005 03:29:14 PM UTC, comment #11:
tried gdb too.
same result as Klaus.
the program receives SIGPIPE, Broken pipe.
Backtrace shows:
#0 send () from /lib/tls/libthread.so.0
#1 ffi_call_SYSV () at src/x86/sysv.S:59
#2 ffi_raw_call (...) at src/x86/ffi.c:515
...
tried ilrun without-ffi support, but no luck.
now backtrace shows:
#0 send // as above
#1 marshal_ipjpiii
#2 _ILVCMInterpreter at cvm_call.c:784
|
Sat 19 Feb 2005 12:28:14 PM UTC, comment #10:
last comment was from me, Brubbel.
forgot to login.
|
Sat 19 Feb 2005 12:24:20 PM UTC, comment #9:
Klaus,
well -> U got it.
The program must not end. That's the bug I have too.
The program should receive an exception and try sending again. Ilrun must not end!
So I'm lucky that someone else has this bug.
But who can have a look to fix that?
I tried kernel 2.6.10, same result.
|
Sat 19 Feb 2005 11:17:10 AM UTC, comment #8:
running the client in gdb gives me the following information after shutting down the server on SuSE 9.2:
Program received signal SIGPIPE, Broken pipe.
[Switching to Thread 1075789952 (LWP 9546)]
0x400d5fac in send () from /lib/tls/libpthread.so.0
When running the program normal it just ends.
|
Fri 18 Feb 2005 11:39:14 AM UTC, comment #7:
Unable to duplicate on my box, using pnet 0.6.12,
Mandrake 10.1, Kernel 2.6.8.1-20mdk.
I get the same result like Deryk Robosson.
|
Fri 18 Feb 2005 10:04:47 AM UTC, comment #6:
Broke tzhe problem down:
the last call which is made is in support/socket.c
... ILSysIOSocketSend(...)
{
/* to here all ok */
return (ILInt32)(send((int)(ILNativeInt)sockfd, msg, len flags ));
}
now I'm on my end.
Might that be a kernel problem?
|
Fri 18 Feb 2005 08:33:10 AM UTC, comment #5:
Same test results as advised in comment #3.
|
Fri 18 Feb 2005 08:19:09 AM UTC, comment #4:
Still have problems using the latest pnet (cvs 18.02.05).
Modified my testprogram, see attachements.
Plz retry with this.
|
Wed 16 Feb 2005 02:00:29 PM UTC, comment #3:
Unable to duplicate on my Linux box here (kernel 2-6.10) using the test case and above instructions, latest CVS build. When stopping the server the client bails and a "broken pipe" response is emitted.
|
Wed 16 Feb 2005 05:52:53 AM UTC, comment #2:
Hi Erich,
no, your quickhack did not help me.
But your bug seems to be similar.
|
Wed 16 Feb 2005 12:54:23 AM UTC, comment #1:
Although it looks different, this might be the same bug I reported in
https://savannah.gnu.org/bugs/?func=detailitem&item_id=11627
Can you try if the described workaround (look for "ERICH quickhack") solves this problem too?
|
Mon 14 Feb 2005 08:17:06 AM UTC, original submission:
1. I'm using a client socket connecting to a server.
2. After connecting creating an NetworkStream from the client.
3. Sending data to the server via NetWorkStream.
4. If server shuts down the connection (server ist stopped) I get an exception -> ok.
5. Now I call Socket.Connected -> says still connected (not ok).
6. Next time trying to send data to the socket ilrun crashes.
Codesnips:
sock = new Socket( ... );
sock.Connect( IPEndPoint(...) );
stream = new NetworkStream( sock );
if( sock.Connected )
stream.Write( ... ); // ok
not stop the server
if( sock.Connected ) // returns true
stream.write( ... ); // throws exception -> ok
if( sock.Connected ) // still returns true !!! -> not ok
stream.write( ... ); // ilrun crashes
***********************
ilrun crashes !!!!!
|