axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Edward Slattery <edslatt...@googlemail.com>
Subject Re: [jira] Created: (AXIS2C-66) axis2_hash_t crashes while resizing
Date Thu, 09 Feb 2006 20:29:21 GMT
It seems I cant access the JIRA at present. heres my two-pennith...


This macro in axis_env.h is not going to work if env is NULL:

#define AXIS2_ENV_CHECK(env, error_return) \

if*(!env *|| !(*env)) \ !!!!!!!!!!BAD!!!!!!!!!!!!!!!

{ \

axis2_allocator_t *allocator = axis2_allocator_init (NULL); \

**env *= axis2_env_create (allocator); \

AXIS2_ERROR_SET_STATUS_CODE((*env)->error, AXIS2_CRTICAL_FAILURE); \

AXIS2_ERROR_SET_ERROR_NUMBER((*env)->error, \

AXIS2_ERROR_ENVIRONMENT_IS_NULL); \

return error_return; \

} \

else \

{ \

AXIS2_ERROR_SET_STATUS_CODE((**env*)->error, AXIS2_SUCCESS); \

}

Something like...

#define AXIS2_ENV_CHECK(env, error_return) \

if*(!env)\

{\
*

/* need some sort of major failure here - cannot return or set an error*/ \

printf("CheckEnv found a NULL environment \n");

exit (0); \
*

}\

else if (*!(*env)) \

{ \

axis2_allocator_t *allocator = axis2_allocator_init (NULL); \

**env *= axis2_env_create (allocator); \

AXIS2_ERROR_SET_STATUS_CODE((*env)->error, AXIS2_CRTICAL_FAILURE); \

AXIS2_ERROR_SET_ERROR_NUMBER((*env)->error, \

AXIS2_ERROR_ENVIRONMENT_IS_NULL); \

return error_return; \

} \

else \

{ \

AXIS2_ERROR_SET_STATUS_CODE((**env*)->error, AXIS2_SUCCESS); \

}

Also - how did the env get to be NULL from expand array - should it be the
current environment instead?...

static void

expand_array (axis2_hash_t * ht)

{

axis2_hash_index_t *hi;

axis2_hash_entry_t **new_array;

unsigned int new_max;

new_max = ht->max * 2 + 1;

new_array = alloc_array (ht, new_max);

for (hi = axis2_hash_first (ht, *ht->environment /* NULL */* ); hi;

hi = axis2_hash_next *(/* NULL */ ht->environment, *hi))

{

unsigned int i = hi->this->hash & new_max;

hi->this->next = new_array[i];

new_array[i] = hi->this;

}

ht->array = new_array;

ht->max = new_max;

}



On 09/02/06, Sahan Gamage (JIRA) <jira@apache.org> wrote:
>
> axis2_hash_t crashes while resizing
> -----------------------------------
>
>         Key: AXIS2C-66
>         URL: http://issues.apache.org/jira/browse/AXIS2C-66
>     Project: Axis2-C
>        Type: Bug
> Components: util
>    Versions: Current (Nightly)
> Environment: Linux/Windows
>    Reporter: Sahan Gamage
>
>
> When server started and echo request is sent 16 times consecutively server
> seg faults.
> I suspect this is because hash's expand_array(). hash's array's default
> size is 16. When this limit
> exceeds segfault happens.
> see below
>
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread -1208883520 (LWP 5580)]
> 0x0061e736 in axis2_hash_first (ht=0x9857ee8, environment=0x0) at hash.c
> :144
> 144 AXIS2_ENV_CHECK(environment, NULL);
> (gdb) bt
> #0 0x0061e736 in axis2_hash_first (ht=0x9857ee8, environment=0x0) at
> hash.c:144
> #1 0x0061e897 in expand_array (ht=0x9857ee8) at hash.c:183
> #2 0x0061edbe in axis2_hash_set (ht=0x9857ee8, key=0x98e1310,
> klen=4294967295, val=0x98e6840) at hash.c:380
> #3 0x00750350 in axis2_conf_ctx_register_svc_grp_ctx (conf_ctx=0x9858648,
> env=0xbf8459f8,
>    svc_grp_id=0x98e1310 "675a9c58-9956-1da1-24a0-0014380ce4a9",
> svc_grp_ctx=0x98e6840) at conf_ctx.c:303
> #4 0x00751181 in axis2_conf_ctx_fill_ctxs (conf_ctx=0x9858648,
> env=0xbf8459f8, msg_ctx=0x98d8330) at conf_ctx.c:539
> #5 0x00135e12 in axis2_ctx_handler_invoke (handler=0x9822328,
> env=0xbf8459f8, msg_ctx=0x98d8330) at ctx_handler.c:144
> #6 0x0012e284 in axis2_phase_invoke (phase=0x98216b8, env=0xbf8459f8,
> msg_ctx=0x98d8330) at phase.c:238
> #7 0x00137c7a in axis2_engine_invoke_phases (engine=0x98e5d48,
> env=0xbf8459f8, phases=0x9804800, msg_ctx=0x98d8330)
>    at engine.c:665
> #8 0x001369e7 in axis2_engine_receive (engine=0x98e5d48, env=0xbf8459f8,
> msg_ctx=0x98d8330) at engine.c:290
> #9 0x00115feb in axis2_http_transport_utils_process_http_post_request
> (env=0xbf8459f8, msg_ctx=0x98d8330,
>    in_stream=0x9852b40, out_stream=0x98d82a0, content_type=0x98e1c20
> "application/soap+xml", content_length=299,
>    soap_action_header=0x98cf660 "", request_uri=0x98e0b78
> "axis2/services/echo/echo") at http_transport_utils.c:306
> #10 0x00114a79 in axis2_http_worker_process_request
> (http_worker=0x9859da8, env=0xbf8459f8, svr_conn=0x9859dc8,
>    simple_request=0x98e1c70) at http_worker.c:286
> #11 0x00fe1966 in axis2_http_svr_thread_run (svr_thread=0x98599f8,
> env=0xbf8459f8) at http_svr_thread.c:183
> #12 0x00fe2816 in axis2_http_server_start (server=0x9804248,
> env=0xbf8459f8) at http_server.c:190
> #13 0x08048e56 in main (argc=1, argv=0xbf845aa4) at http_server_main.c:133
>
> --
> This message is automatically generated by JIRA.
> -
> If you think it was sent incorrectly contact one of the administrators:
>   http://issues.apache.org/jira/secure/Administrators.jspa
> -
> For more information on JIRA, see:
>   http://www.atlassian.com/software/jira
>
>

Mime
View raw message