ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

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

segfault mod upload progress v0.2


  • To: nginx-ru@xxxxxxxxx
  • Subject: segfault mod upload progress v0.2
  • From: "Александр Кутузов" <alleteam@xxxxxxxxx>
  • Date: Wed, 30 Apr 2008 11:26:13 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; bh=Kr1SwmSOVGqQsy9rMsj+2/sn59Oz6vEtWT8ds31PAU4=; b=OFPMF4ftwHhbrGyw61bANp+dVCl+ZvGh/KJ5U80UkikXnAc/mX9mMzO7soVuss21EltuA70MGfgaf81bwUv3zF9KYnxo0wsopsV5v45se/BPFTOKKmdpMOnIMuBIoLkyyJRzOsXUHv7u/qQF7nfamWIywpqPYlMjK7B4HB1/01M=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=Dfwf9OQrevPi7Kv93emEYZrpOdsdIcvH14SxCB+zwEQ5cOpHESmkp53lZzkuc0hYatMlm46ppk3O2wYV/ntMSYsgCmoUbPymjH1ISMew2zH7McBEB+TIQABVI9LvqeSNDgbJioIQvc2VxB6pzW9ujcwdEEJ225RVJxGPcX77EpY=

юзаю сию прелесть, какоето время гонял его на 0.6.27 без проблем.

сечас собрал сию прелесть на 0.6.30, напоролся на то что nginx
выпадает в сегфолт изза него:
собрано на дебьяне с ядром 2.6.24-1-686
сегфолт получается очень забавным, такое ощущение что nginx пытается
отдать 404 и в это же время аплоад прогресс отдает статус.
bt для это прелести:

#0  0x08095c69 in ngx_http_reportuploads_handler (r=0x80c2688) at
nginx_uploadprogress_module/ngx_http_uploadprogress_module.c:431
        id = <value optimized out>
        b = (ngx_buf_t *) 0x80b9750
        out = {buf = 0x80b9750, next = 0x0}
        orig = (ngx_http_request_t *) 0x80c2a90
        rc = <value optimized out>
        size = <value optimized out>
        i = <value optimized out>
        shpool = (ngx_slab_pool_t *) 0xb7baa000
        upcf = <value optimized out>
        up = <value optimized out>
        expires = <value optimized out>
        cc = <value optimized out>
        ccp = <value optimized out>
#1  0x0806b964 in ngx_http_core_content_phase (r=0x80c2688,
ph=0x80c4a90) at src/http/ngx_http_core_module.c:1014
        root = 134851251
        rc = <value optimized out>
        path = {len = 134952136, data = 0x0}
#2  0x08067835 in ngx_http_handler (r=0x80c2688) at
src/http/ngx_http_core_module.c:668
No locals.
#3  0x0806795e in ngx_http_update_location_config (r=0x80c2688) at
src/http/ngx_http_core_module.c:1070
        clcf = (ngx_http_core_loc_conf_t *) 0x6c707061
#4  0x0806fa51 in ngx_http_process_unique_header_line (r=0x80c6e78,
h=0x6c707061, offset=5) at src/http/ngx_http_request.c:1208
        ph = <value optimized out>
#5  0x080705e4 in ngx_http_process_request_line (rev=0x80dae48) at
src/http/ngx_http_request.c:624
        n = <value optimized out>
        rc = <value optimized out>
        rv = <value optimized out>
        c = (ngx_connection_t *) 0x80c26bc
        r = (ngx_http_request_t *) 0x80c2688
#6  0x08070ab0 in ngx_http_parse_request_line (r=0x80dae48, b=0x38) at
src/http/ngx_http_parse.c:136
        ch = 136 '\210'
        p = (u_char *) 0x809bbef "ontent-Length"
        m = <value optimized out>
        state = 135014076
#7  0x0806d547 in ngx_http_keepalive_handler (rev=0x80dae48) at
src/http/ngx_http_request.c:2198
        size = <value optimized out>
        n = <value optimized out>
        b = <value optimized out>
        c = (ngx_connection_t *) 0x80c2688
#8  0x0805d354 in ngx_event_busy_lock_cancel (bl=0x80b3a38,
ctx=0x80dae48) at src/event/ngx_event_busy_lock.c:191
        c = (ngx_event_busy_lock_ctx_t *) 0x653d4654
        p = (ngx_event_busy_lock_ctx_t *) 0x6c707061
#9  0x0805d179 in ngx_event_expire_timers () at src/event/ngx_event_timer.c:77
        ev = <value optimized out>
        node = <value optimized out>
---Type <return> to continue, or q <return> to quit---
        root = <value optimized out>
        sentinel = <value optimized out>
#10 0x08063942 in ngx_worker_process_cycle (cycle=0x80b3a38, data=0x0)
at src/os/unix/ngx_process_cycle.c:775
        i = 134916896
        c = <value optimized out>
#11 0x080622e1 in ngx_spawn_process (cycle=0x80b3a38, proc=0x80632ce
<ngx_worker_process_cycle+64>, data=0x0, name=0x809a0f3 "borting",
respawn=1) at src/os/unix/ngx_process.c:196
        on = 1
        pid = 0
        s = 1
#12 0x0806431a in ngx_master_process_cycle (cycle=0x80b3a38) at
src/os/unix/ngx_process_cycle.c:574
        title = <value optimized out>
        p = <value optimized out>
        size = 47
        i = 64
        n = 64
        set = {__val = {0 <repeats 32 times>}}
        itv = {it_interval = {tv_sec = -1077034088, tv_usec = 1}, it_value =
{tv_sec = -1077033992, tv_usec = 0}}
        live = 1
        delay = 0
        ccf = (ngx_core_conf_t *) 0x80b41e4
#13 0x0804b222 in main (argc=3, argv=0xbfcdc594) at src/core/nginx.c:388
        i = <value optimized out>
        log = (ngx_log_t *) 0x80a909c
        cycle = <value optimized out>
        init_cycle = {conf_ctx = 0x0, pool = 0x80b3498, log = 0x80a909c,
new_log = 0x0, files = 0x0, free_connections = 0x0, free_connection_n
= 0, listening = {elts = 0x0, nelts = 0, size = 0, nalloc = 0,
    pool = 0x0}, pathes = {elts = 0x0, nelts = 0, size = 0, nalloc =
0, pool = 0x0}, open_files = {last = 0x0, part = {elts = 0x0, nelts =
0, next = 0x0}, size = 0, nalloc = 0, pool = 0x0}, shared_memory = {
    last = 0x0, part = {elts = 0x0, nelts = 0, next = 0x0}, size = 0,
nalloc = 0, pool = 0x0}, connection_n = 0, files_n = 0, connections =
0x0, read_events = 0x0, write_events = 0x0, old_cycle = 0x0,
  conf_file = {len = 15, data = 0x80b30e0 "conf/nginx.conf"}, root =
{len = 0, data = 0x0}, lock_file = {len = 0, data = 0x0}}
        ccf = <value optimized out>

(gdb) f 0
#0  0x08095c69 in ngx_http_reportuploads_handler (r=0x80c2688) at
nginx_uploadprogress_module/ngx_http_uploadprogress_module.c:431
431                             (orig->headers_in.content_length_n -
(gdb) l
426                            sizeof("new Object({ 'state' : 'uploading',
'received' : ") -
427                            1);
428     
429             b->last =
430                 ngx_sprintf(b->last, "%uO, 'size' : %uO })\r\n",
431                             (orig->headers_in.content_length_n -
432                              orig->request_body->rest),
433                             orig->headers_in.content_length_n);
434     
435             ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
(gdb) p orig->request_body->rest
Cannot access memory at address 0x6c70706d


помимо мастер процесса, 1 дочерний, если неправ при вытаскивании
данных из корки, поправьте. в момент сегфолта, отдается ответ порой
неполный порой пустой, если неполный то там часть выхода аплоад
прогресса и попытки нгинкса выдать ошибку.

если не по адресу, то извиняйте, автора модуля не могу найти.


 




Copyright © Lexa Software, 1996-2009.