Re: kernel BUG at kernel/timer.c:407!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 16:42, Gerrit Renker wrote:

> I would much rather hunt down this bug than revert this patch, since reverting it
> means that almost twice the work is done per each packet and truly bidirectional
> connections are not currently supported.

Agreed. Let's try to find the bug.

> With initial tests here I could not reproduce the bug and had difficulties 
> since I have not all required libraries for paraslash.

You only need libssl-dev to reproduce the bug. All the other libraries
are optional and configure should detect what is installed on your
system.

> 1. I see you are using loopback (127.0.0.1) where packets are routed back
>    internally: does the bug persist when CCID2 sender and CCID2 receiver
>    are on different hosts?

Not so easy to find out because I only have one machine and no
internet at home, and no kernel with dccp support at work. I'll see
what I can do.

> 2. This is using CCID2, which has not been maintained for a while. Can
>    you please try CCID 3 also, e.g. by using the following sysctls:
>    
>    sysctl -w net.dccp.default.rx_ccid=3 
>    sysctl -w net.dccp.default.tx_ccid=3
>    sysctl -w net.dccp.default.tx_qlen=5
>    sysctl -w net.dccp.default.seq_window=100
>    sysctl -w net.dccp.default.send_ackvec=0

Will do this today in the evening and report again tomorrow.
 
> 3. Caveat: `Server' listens, `Client' connects. I could not build the paraslash app
>    due to missing libraries, but found that dccp_recv_open calls connect in dccp_recv.c
>    while dccp_open() in dccp_send.c calls listen(). It seems that the roles are reversed,
>    is it possible to swap this in the application and does the problem persist?

Well, that's possible, but IMHO does not make much sense: The server
app waits for incoming connections (not neccessary only dccp) and
responds by sending the audio stream to the client. That's how it's
supposed to be, no?

> The BUG is caused via the following chain: 
> 
> 1. dccp_write_xmit(sk, 0) (due to !block)
> 1. dccp_sendmsg
> 2. ccid2_hc_tx_send_packet -> with hctx->ccid2hctx_pipe >= hctx->ccid2hctx_cwnd
>    (see above, pipe=cwnd=1) ==> returns 1
> 3. in dccp_write_xmit(sk, 0):
>    if (!block) {                 /* this is true here */
> 		sk_reset_timer(sk, &dp->dccps_xmit_timer,
>    				msecs_to_jiffies(err)+jiffies)
>    ==> BUG()
> |   <7>dccp_set_state: listen(c1580030) LISTEN     -> CLOSED
> This may be a clue: this socket has not gone past listen state (i.e. not entered server)

Yes, the bug happens in para_server just at the moment the first client
connects. No data is transfered to the client. I'll look into the kernel
dccp code a bit this evening as well.

Thanks for your help
Andre
-- 
The only person who always got his work done by Friday was Robinson Crusoe

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Kernel]     [IETF DCCP]     [Linux Networking]     [Git]     [Security]     [Linux Assembly]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux