I modified the current jk_connect to avoid problem with the static
jk_apr_pool variable and sus avoid concurrency problems.

Study

2009/5/12 Henri Gomez <henri.go...@gmail.com>:
> FYI.
>
> If I comment the apr_pool_clear() call, I didn't get the initialisation error
>
> 2009/5/12 Henri Gomez <henri.go...@gmail.com>:
>> Hi to all,
>>
>> I rebuild the mod_jk 1.2.28 on our i5/OS and Apache instance failed.
>>
>> Here is the stack trace :
>>
>> 00000009:259448 Stack:  Library    / Program     Module      Stmt
>> Procedure
>> 00000009:259488 Stack:  QSYS       / QCMD                    455   :
>> 00000009:259520 Stack:  QHTTPSVR   / QZHBMAIN    ZHBMAIN     0     :
>> _CXX_PEP__Fv
>> 00000009:259552 Stack:  QHTTPSVR   / QZHBMAIN    ZHBMAIN     18    :
>> main
>> 00000009:259576 Stack:  QHTTPSVR   / QZHBMAIN    ZHBMAIN     234   :
>> BigSwitch__FiPPc
>> 00000009:259608 Stack:  QHTTPSVR   / QZSRHTTP    QZSRMAIN    0     :
>> _CXX_PEP__Fv
>> 00000009:259640 Stack:  QHTTPSVR   / QZSRHTTP    QZSRMAIN    2     :
>> main
>> 00000009:267440 Stack:  QHTTPSVR   / QZSRCORE    MAIN        868   :
>> apache_main
>> 00000009:287992 Stack:  QHTTPSVR   / QZSRCORE    HTTP_CONFI  5     :
>> ap_run_post_config
>> 00000009:288288 Stack:  QHTTPSVR   / MOD_JK1228  MOD_JK      60    :
>> jk_post_config
>> 00000009:288320 Stack:  QHTTPSVR   / MOD_JK1228  MOD_JK      35    :
>> init_jk
>> 00000009:288688 Stack:  QHTTPSVR   / MOD_JK1228  JK_WORKER   34    :
>> wc_open
>> 00000009:288720 Stack:  QHTTPSVR   / MOD_JK1228  JK_WORKER   9     :
>> build_worker_map
>> 00000009:296848 Stack:  QHTTPSVR   / MOD_JK1228  JK_WORKER   28    :
>> wc_create_worker
>> 00000009:298192 Stack:  QHTTPSVR   / MOD_JK1228  JK_AJP13_W  5     :
>> validate
>> 00000009:298208 Stack:  QHTTPSVR   / MOD_JK1228  JK_AJP_COM  29    :
>> ajp_validate
>> 00000009:298216 Stack:  QHTTPSVR   / MOD_JK1228  JK_CONNECT  19    :
>> jk_resolve
>> 00000009:316840 Stack:  QHTTPSVR   / QZSRAPR     APR_POOLS   13    :
>> apr_pool_clear
>> 00000009:316864 Stack:  QHTTPSVR   / QZSRAPR     APR_POOLS   8     :
>> allocator_free
>> 00000009:316880 Stack:  QHTTPSVR   / QZSRCORE    MAIN        18    :
>> Main_Excp_Handler
>> 00000009:316888 Stack:  QHTTPSVR   / QZSRAPR     OS400TRACE  7     :
>> apr_dstack_CCSID
>> 00000009:326912 Stack:  QSYS       / QP0ZCPA     QP0ZUDBG    3     :
>> Qp0zDumpStack
>> 00000009:346808 Stack:  QSYS       / QP0ZSCPA    QP0ZSDBG    2     :
>> Qp0zSUDumpStack
>> 00000009:346824 Stack:  QSYS       / QP0ZSCPA    QP0ZSDBG    12    :
>> Qp0zSUDumpTargetStack
>> 00000009:346824 Stack:  Completed
>> 00000009:407280 apr_dump_trace(): dump for job
>> 678302/QTMHHTTP/DAPSERVER
>>                                                 TRCTCPAPP Output
>>
>> The problem appears in jk_resolve just after apr_pool_create.
>>
>> What happen if 2 threads goes in jk_resolve at the same time ?
>>
>>        if (!jk_apr_pool) {
>>            if (apr_pool_create(&jk_apr_pool, (apr_pool_t *)pool) !=
>> APR_SUCCESS) {
>>                JK_TRACE_EXIT(l);
>>                return JK_FALSE;
>>            }
>>        }
>>        apr_pool_clear(jk_apr_pool);
>>        if (apr_sockaddr_info_get
>>            (&remote_sa, host, APR_UNSPEC, (apr_port_t) port, 0, jk_apr_pool)
>>            != APR_SUCCESS) {
>>            JK_TRACE_EXIT(l);
>>            return JK_FALSE;
>>        }
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to