Messages in this thread | | | Date | Wed, 05 Oct 2005 17:41:06 +0200 | From | Peter Duellings <> | Subject | Re: kernel error in system call accept() under kernel 2.6.8 |
| |
Alan,
meanwhile we could generate a strace for the problem. However, I guess that the strace does not give the desired information (see parts below).
Additionally we added in the program the output of the return value of the accept() system call . The return value is -512 and the errno value is 0! Usually the return value should be -1 and the errno should contain the value without the sign of the error.
Any idea or comment on this ?
Thanks,
Peter Düllings
---------<strace>------------ 2682 09:25:29.238663 accept(21, <unfinished ...> 2688 09:25:29.263486 accept(33, {sa_family=AF_INET, sin_port=htons(32811), sin_addr=inet_addr("127.0.0.1")}, [16]) = 40 <27.171270> 2688 09:25:56.589969 accept(33, 0x82fa7e0, [16]) = ? ERESTARTSYS (To be restarted) <0.385453> 2688 09:25:56.975563 --- SIGCHLD (Child exited) @ 0 (0) --- 2688 09:25:56.975676 accept(33, 0x82fa7e0, [16]) = ? ERESTARTSYS (To be restarted) <0.205963> 2688 09:25:57.181770 --- SIGCHLD (Child exited) @ 0 (0) --- 2688 09:25:57.181842 accept(33, <unfinished ...> 2682 09:25:57.231961 <... accept resumed> {sa_family=AF_INET, sin_port=htons (32882), sin_addr=inet_addr("127.0.0.1")}, [16]) = 43 <27.993066> 2682 09:25:57.234320 accept(21, <unfinished ...> 2688 09:25:57.538314 <... accept resumed> 0x82fa7e0, [16]) = ? ERESTARTSYS (To be restarted) <0.356435> 2688 09:25:57.538429 --- SIGCHLD (Child exited) @ 0 (0) --- 2688 09:25:57.538488 accept(33, 0x82fa7e0, [16]) = ? ERESTARTSYS (To be restarted) <0.015688> 2688 09:25:57.554315 --- SIGCHLD (Child exited) @ 0 (0) --- 2688 09:25:57.554370 accept(33, 0x82fa7e0, [16]) = ? ERESTARTSYS (To be restarted) <0.192660> 2688 09:25:57.747151 --- SIGCHLD (Child exited) @ 0 (0) --- 2688 09:25:57.747236 accept(33, 0x82fa7e0, [16]) = ? ERESTARTSYS (To be restarted) <0.097813> .... . ---------</strace>------------
Alan Cox wrote:
> On Maw, 2005-09-20 at 16:25 +0200, Peter Duellings wrote: > >>Obviously there are some cases where the accept() system call does >>not set the errno variable if the accept() system call returns >>with a value less than zero: > > > Not actually possible. The kernel returns a positive value, zero or a > negative value which is the errno code negated. It has no mechanism to > return a negative value and not error. > > What does strace show for the failing case ? > >
--
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |