Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
12 years ago

modified webserver - application crash under load

Hi,

I write this post after some many hours of debugging without result...

I have taken over the Altera webserver provided with the Stratix V GX devkit (not the one included in NiosII EDS) and among changes I switched the transfer type from "Content-Length" to "Transfer-Encoding: chunked". The application works fine if the requests are made e.g. once a second, but if the page is refreshed several times a second, it hangs.

My problem also is that I am not able to step-debug this problem: it seems throughput related so as soon as I switch to debugging mode everything works fine.

Can anyone give me an idea what causes the problem or how I can figure out where it last crashed?

I appreciate any help!

PS: I have attached the original and the modified versions, all relevant changes are in webserver.c (function http_send_file_chunk).

1 Reply

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi again,

    while debugging noticed a certain flow: at some point the Nios stops servicing HTTP requests, the PC asks for TCP retransmissions and than sends ARP packets for a while. After a number of ARPs the Nios starts sending flow control messages (in my understanding resume messages).

    Now if it sends resume messages I should understand it initially sent a pause request, which I don't see in the trace...

    I have attached a Wireshark trace of the session, from OK to failure...

    
    60    6.778055000    Altera_1c:12:34    Spanning-tree-(for-bridges)_01    MAC CTRL    60    MAC PAUSE: pause_time: 0 quanta    203
    0000  01 80 c2 00 00 01 00 07  ed 1c 12 34 88 08 00 01   ........ ...4....
    0010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........
    0020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........
    0030  00 00 00 00 00 00 00 00  00 00 00 00               ........ ....
    

    ==============

    In a Qsys design without TSE MAC flow control the Nios also "hangs" but with the difference that the flow control message never gets sent.

    In both cases, while the Nios is in the complete silence state, 3 interrupts are continuously high: SGDMA RX, SGDMA TX and JTAG UART.

    ==============

    EDIT: I was able to capture the following exception:

    panic: unlock NET
    dtrap - needs breakpoint
    ip_exit: calling func 0xa028e88
    netclose: closing iface Altera TSE MAC ethernet
    ip_exit: calling func 0xa02da20
    panic: unlock NET
    dtrap - needs breakpoint
    ip_exit: calling func 0x0
    ip_exit: calling func 0x0
    

    in Objdump I have the following mapping:

    * 0xa02da20 - clock_c

    * 0xa028e88 - netclose

    Can anyone help me understand what's happening in this scenario?