You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Dave Meier (JIRA)" <ji...@apache.org> on 2008/01/22 18:44:34 UTC

[jira] Created: (AXIS2-3462) WSDL2C:

WSDL2C: 
--------

                 Key: AXIS2-3462
                 URL: https://issues.apache.org/jira/browse/AXIS2-3462
             Project: Axis 2.0 (Axis2)
          Issue Type: Bug
          Components: codegen
    Affects Versions: 1.3
         Environment: Windows XP
            Reporter: Dave Meier
            Priority: Blocker


Using:

org.apache.axis2.wsdl.WSDL2C -f -uri aewebservices70.wsdl -o aewebservicesaxis70 -d adb -ss -sd

Problem:

In the serialize methods, the namespaces hashtable is being freed for many of my adb objects, but one object that is nested frees this hashtable, then returns and the calling serialize method then tries to use the freed table and crashes.

Here's a code fragment showing the calling serialize method (adb_NameValue_serialize(...)):

  if (!_NameValue->is_valid_setValueBy)
  {
    /* no need to complain for minoccurs=0 element */
  }
  else
  {
    start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
      (4 + axutil_strlen(p_prefix) + 
      axutil_strlen("setValueBy") + 
      ADB_DEFAULT_DIGIT_LIMIT* 2)); 

    end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
      (5 + ADB_DEFAULT_DIGIT_LIMIT + axutil_strlen("setValueBy")));

    /*
    * parsing setValueBy element
    */

    sprintf(start_input_str, "<%s%ssetValueBy",
      p_prefix?p_prefix:"",
      (p_prefix && axutil_strcmp(p_prefix, ""))?":":""); 

    start_input_str_len = axutil_strlen(start_input_str);
    sprintf(end_input_str, "</%s%ssetValueBy>",
      p_prefix?p_prefix:"",
      (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
    end_input_str_len = axutil_strlen(end_input_str);

    if(!adb_Set_Value_By_is_particle())
    {
      axutil_stream_write(stream, env, start_input_str, start_input_str_len);
    }

    adb_Set_Value_By_serialize(_NameValue->property_setValueBy, 
      env, current_node, parent_element,
      adb_Set_Value_By_is_particle() || AXIS2_FALSE, namespaces, next_ns_index);  // THIS IS WHERE namespaces gets freed

    if(!adb_Set_Value_By_is_particle())
    {
      axutil_stream_write(stream, env, end_input_str, end_input_str_len);
    }

  } 

  if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "urn:aewebservicesaxis70", AXIS2_HASH_KEY_STRING)))  // THIS IS WHERE it gets used again and crashes
...

I will attach my wsdl file and the two adb files involved in the code above ( adb_NameValue.c which contains the above code and adb_Set_Value_By.c which contains the adb_Set_Value_By_serialize(...) method that frees the namespaces hashtable.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


[jira] Updated: (AXIS2-3462) WSDL2C:

Posted by "Dave Meier (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2-3462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dave Meier updated AXIS2-3462:
------------------------------

    Comment: was deleted

> WSDL2C: 
> --------
>
>                 Key: AXIS2-3462
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3462
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: codegen
>    Affects Versions: 1.3
>         Environment: Windows XP
>            Reporter: Dave Meier
>            Priority: Blocker
>         Attachments: adb_NameValue.c, adb_Set_Value_By.c, aewebservicesaxis70.wsdl
>
>
> Using:
> org.apache.axis2.wsdl.WSDL2C -f -uri aewebservicesaxis70.wsdl -o aewebservicesaxis70 -d adb -ss -sd
> Problem:
> In the serialize methods, the namespaces hashtable is being freed for many of my adb objects, but one object that is nested frees this hashtable, then returns and the calling serialize method then tries to use the freed table and crashes.
> Here's a code fragment showing the calling serialize method (adb_NameValue_serialize(...)):
>   if (!_NameValue->is_valid_setValueBy)
>   {
>     /* no need to complain for minoccurs=0 element */
>   }
>   else
>   {
>     start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
>       (4 + axutil_strlen(p_prefix) + 
>       axutil_strlen("setValueBy") + 
>       ADB_DEFAULT_DIGIT_LIMIT* 2)); 
>     end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
>       (5 + ADB_DEFAULT_DIGIT_LIMIT + axutil_strlen("setValueBy")));
>     /*
>     * parsing setValueBy element
>     */
>     sprintf(start_input_str, "<%s%ssetValueBy",
>       p_prefix?p_prefix:"",
>       (p_prefix && axutil_strcmp(p_prefix, ""))?":":""); 
>     start_input_str_len = axutil_strlen(start_input_str);
>     sprintf(end_input_str, "</%s%ssetValueBy>",
>       p_prefix?p_prefix:"",
>       (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
>     end_input_str_len = axutil_strlen(end_input_str);
>     if(!adb_Set_Value_By_is_particle())
>     {
>       axutil_stream_write(stream, env, start_input_str, start_input_str_len);
>     }
>     adb_Set_Value_By_serialize(_NameValue->property_setValueBy, 
>       env, current_node, parent_element,
>       adb_Set_Value_By_is_particle() || AXIS2_FALSE, namespaces, next_ns_index);  // THIS IS WHERE namespaces gets freed
>     if(!adb_Set_Value_By_is_particle())
>     {
>       axutil_stream_write(stream, env, end_input_str, end_input_str_len);
>     }
>   } 
>   if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "urn:aewebservicesaxis70", AXIS2_HASH_KEY_STRING)))  // THIS IS WHERE it gets used again and crashes
> ...
> I will attach my wsdl file and the two adb files involved in the code above ( adb_NameValue.c which contains the above code and adb_Set_Value_By.c which contains the adb_Set_Value_By_serialize(...) method that frees the namespaces hashtable.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


[jira] Closed: (AXIS2-3462) WSDL2C:

Posted by "Dave Meier (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2-3462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dave Meier closed AXIS2-3462.
-----------------------------

       Resolution: Fixed
    Fix Version/s: nightly

I used the latest nightly build and discovered that this problem has already been fixed.

Thanks!

-Dave.

> WSDL2C: 
> --------
>
>                 Key: AXIS2-3462
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3462
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: codegen
>    Affects Versions: 1.3
>         Environment: Windows XP
>            Reporter: Dave Meier
>            Priority: Blocker
>             Fix For: nightly
>
>         Attachments: adb_NameValue.c, adb_Set_Value_By.c, aewebservicesaxis70.wsdl
>
>
> Using:
> org.apache.axis2.wsdl.WSDL2C -f -uri aewebservicesaxis70.wsdl -o aewebservicesaxis70 -d adb -ss -sd
> Problem:
> In the serialize methods, the namespaces hashtable is being freed for many of my adb objects, but one object that is nested frees this hashtable, then returns and the calling serialize method then tries to use the freed table and crashes.
> Here's a code fragment showing the calling serialize method (adb_NameValue_serialize(...)):
>   if (!_NameValue->is_valid_setValueBy)
>   {
>     /* no need to complain for minoccurs=0 element */
>   }
>   else
>   {
>     start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
>       (4 + axutil_strlen(p_prefix) + 
>       axutil_strlen("setValueBy") + 
>       ADB_DEFAULT_DIGIT_LIMIT* 2)); 
>     end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
>       (5 + ADB_DEFAULT_DIGIT_LIMIT + axutil_strlen("setValueBy")));
>     /*
>     * parsing setValueBy element
>     */
>     sprintf(start_input_str, "<%s%ssetValueBy",
>       p_prefix?p_prefix:"",
>       (p_prefix && axutil_strcmp(p_prefix, ""))?":":""); 
>     start_input_str_len = axutil_strlen(start_input_str);
>     sprintf(end_input_str, "</%s%ssetValueBy>",
>       p_prefix?p_prefix:"",
>       (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
>     end_input_str_len = axutil_strlen(end_input_str);
>     if(!adb_Set_Value_By_is_particle())
>     {
>       axutil_stream_write(stream, env, start_input_str, start_input_str_len);
>     }
>     adb_Set_Value_By_serialize(_NameValue->property_setValueBy, 
>       env, current_node, parent_element,
>       adb_Set_Value_By_is_particle() || AXIS2_FALSE, namespaces, next_ns_index);  // THIS IS WHERE namespaces gets freed
>     if(!adb_Set_Value_By_is_particle())
>     {
>       axutil_stream_write(stream, env, end_input_str, end_input_str_len);
>     }
>   } 
>   if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "urn:aewebservicesaxis70", AXIS2_HASH_KEY_STRING)))  // THIS IS WHERE it gets used again and crashes
> ...
> I will attach my wsdl file and the two adb files involved in the code above ( adb_NameValue.c which contains the above code and adb_Set_Value_By.c which contains the adb_Set_Value_By_serialize(...) method that frees the namespaces hashtable.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


[jira] Updated: (AXIS2-3462) WSDL2C:

Posted by "Dave Meier (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2-3462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dave Meier updated AXIS2-3462:
------------------------------

    Attachment: aewebservicesaxis70.wsdl

aewebservicesaxis70.wsdl

> WSDL2C: 
> --------
>
>                 Key: AXIS2-3462
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3462
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: codegen
>    Affects Versions: 1.3
>         Environment: Windows XP
>            Reporter: Dave Meier
>            Priority: Blocker
>         Attachments: adb_NameValue.c, adb_Set_Value_By.c, aewebservicesaxis70.wsdl
>
>
> Using:
> org.apache.axis2.wsdl.WSDL2C -f -uri aewebservices70.wsdl -o aewebservicesaxis70 -d adb -ss -sd
> Problem:
> In the serialize methods, the namespaces hashtable is being freed for many of my adb objects, but one object that is nested frees this hashtable, then returns and the calling serialize method then tries to use the freed table and crashes.
> Here's a code fragment showing the calling serialize method (adb_NameValue_serialize(...)):
>   if (!_NameValue->is_valid_setValueBy)
>   {
>     /* no need to complain for minoccurs=0 element */
>   }
>   else
>   {
>     start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
>       (4 + axutil_strlen(p_prefix) + 
>       axutil_strlen("setValueBy") + 
>       ADB_DEFAULT_DIGIT_LIMIT* 2)); 
>     end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
>       (5 + ADB_DEFAULT_DIGIT_LIMIT + axutil_strlen("setValueBy")));
>     /*
>     * parsing setValueBy element
>     */
>     sprintf(start_input_str, "<%s%ssetValueBy",
>       p_prefix?p_prefix:"",
>       (p_prefix && axutil_strcmp(p_prefix, ""))?":":""); 
>     start_input_str_len = axutil_strlen(start_input_str);
>     sprintf(end_input_str, "</%s%ssetValueBy>",
>       p_prefix?p_prefix:"",
>       (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
>     end_input_str_len = axutil_strlen(end_input_str);
>     if(!adb_Set_Value_By_is_particle())
>     {
>       axutil_stream_write(stream, env, start_input_str, start_input_str_len);
>     }
>     adb_Set_Value_By_serialize(_NameValue->property_setValueBy, 
>       env, current_node, parent_element,
>       adb_Set_Value_By_is_particle() || AXIS2_FALSE, namespaces, next_ns_index);  // THIS IS WHERE namespaces gets freed
>     if(!adb_Set_Value_By_is_particle())
>     {
>       axutil_stream_write(stream, env, end_input_str, end_input_str_len);
>     }
>   } 
>   if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "urn:aewebservicesaxis70", AXIS2_HASH_KEY_STRING)))  // THIS IS WHERE it gets used again and crashes
> ...
> I will attach my wsdl file and the two adb files involved in the code above ( adb_NameValue.c which contains the above code and adb_Set_Value_By.c which contains the adb_Set_Value_By_serialize(...) method that frees the namespaces hashtable.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


[jira] Updated: (AXIS2-3462) WSDL2C:

Posted by "Dave Meier (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2-3462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dave Meier updated AXIS2-3462:
------------------------------

    Attachment: adb_NameValue.c

adb_NameValue.c

> WSDL2C: 
> --------
>
>                 Key: AXIS2-3462
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3462
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: codegen
>    Affects Versions: 1.3
>         Environment: Windows XP
>            Reporter: Dave Meier
>            Priority: Blocker
>         Attachments: adb_NameValue.c
>
>
> Using:
> org.apache.axis2.wsdl.WSDL2C -f -uri aewebservices70.wsdl -o aewebservicesaxis70 -d adb -ss -sd
> Problem:
> In the serialize methods, the namespaces hashtable is being freed for many of my adb objects, but one object that is nested frees this hashtable, then returns and the calling serialize method then tries to use the freed table and crashes.
> Here's a code fragment showing the calling serialize method (adb_NameValue_serialize(...)):
>   if (!_NameValue->is_valid_setValueBy)
>   {
>     /* no need to complain for minoccurs=0 element */
>   }
>   else
>   {
>     start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
>       (4 + axutil_strlen(p_prefix) + 
>       axutil_strlen("setValueBy") + 
>       ADB_DEFAULT_DIGIT_LIMIT* 2)); 
>     end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
>       (5 + ADB_DEFAULT_DIGIT_LIMIT + axutil_strlen("setValueBy")));
>     /*
>     * parsing setValueBy element
>     */
>     sprintf(start_input_str, "<%s%ssetValueBy",
>       p_prefix?p_prefix:"",
>       (p_prefix && axutil_strcmp(p_prefix, ""))?":":""); 
>     start_input_str_len = axutil_strlen(start_input_str);
>     sprintf(end_input_str, "</%s%ssetValueBy>",
>       p_prefix?p_prefix:"",
>       (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
>     end_input_str_len = axutil_strlen(end_input_str);
>     if(!adb_Set_Value_By_is_particle())
>     {
>       axutil_stream_write(stream, env, start_input_str, start_input_str_len);
>     }
>     adb_Set_Value_By_serialize(_NameValue->property_setValueBy, 
>       env, current_node, parent_element,
>       adb_Set_Value_By_is_particle() || AXIS2_FALSE, namespaces, next_ns_index);  // THIS IS WHERE namespaces gets freed
>     if(!adb_Set_Value_By_is_particle())
>     {
>       axutil_stream_write(stream, env, end_input_str, end_input_str_len);
>     }
>   } 
>   if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "urn:aewebservicesaxis70", AXIS2_HASH_KEY_STRING)))  // THIS IS WHERE it gets used again and crashes
> ...
> I will attach my wsdl file and the two adb files involved in the code above ( adb_NameValue.c which contains the above code and adb_Set_Value_By.c which contains the adb_Set_Value_By_serialize(...) method that frees the namespaces hashtable.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


[jira] Updated: (AXIS2-3462) WSDL2C:

Posted by "Dave Meier (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2-3462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dave Meier updated AXIS2-3462:
------------------------------

    Attachment: adb_Set_Value_By.c

adb_Set_Value_By.c

> WSDL2C: 
> --------
>
>                 Key: AXIS2-3462
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3462
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: codegen
>    Affects Versions: 1.3
>         Environment: Windows XP
>            Reporter: Dave Meier
>            Priority: Blocker
>         Attachments: adb_NameValue.c, adb_Set_Value_By.c, aewebservicesaxis70.wsdl
>
>
> Using:
> org.apache.axis2.wsdl.WSDL2C -f -uri aewebservices70.wsdl -o aewebservicesaxis70 -d adb -ss -sd
> Problem:
> In the serialize methods, the namespaces hashtable is being freed for many of my adb objects, but one object that is nested frees this hashtable, then returns and the calling serialize method then tries to use the freed table and crashes.
> Here's a code fragment showing the calling serialize method (adb_NameValue_serialize(...)):
>   if (!_NameValue->is_valid_setValueBy)
>   {
>     /* no need to complain for minoccurs=0 element */
>   }
>   else
>   {
>     start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
>       (4 + axutil_strlen(p_prefix) + 
>       axutil_strlen("setValueBy") + 
>       ADB_DEFAULT_DIGIT_LIMIT* 2)); 
>     end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
>       (5 + ADB_DEFAULT_DIGIT_LIMIT + axutil_strlen("setValueBy")));
>     /*
>     * parsing setValueBy element
>     */
>     sprintf(start_input_str, "<%s%ssetValueBy",
>       p_prefix?p_prefix:"",
>       (p_prefix && axutil_strcmp(p_prefix, ""))?":":""); 
>     start_input_str_len = axutil_strlen(start_input_str);
>     sprintf(end_input_str, "</%s%ssetValueBy>",
>       p_prefix?p_prefix:"",
>       (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
>     end_input_str_len = axutil_strlen(end_input_str);
>     if(!adb_Set_Value_By_is_particle())
>     {
>       axutil_stream_write(stream, env, start_input_str, start_input_str_len);
>     }
>     adb_Set_Value_By_serialize(_NameValue->property_setValueBy, 
>       env, current_node, parent_element,
>       adb_Set_Value_By_is_particle() || AXIS2_FALSE, namespaces, next_ns_index);  // THIS IS WHERE namespaces gets freed
>     if(!adb_Set_Value_By_is_particle())
>     {
>       axutil_stream_write(stream, env, end_input_str, end_input_str_len);
>     }
>   } 
>   if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "urn:aewebservicesaxis70", AXIS2_HASH_KEY_STRING)))  // THIS IS WHERE it gets used again and crashes
> ...
> I will attach my wsdl file and the two adb files involved in the code above ( adb_NameValue.c which contains the above code and adb_Set_Value_By.c which contains the adb_Set_Value_By_serialize(...) method that frees the namespaces hashtable.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


[jira] Updated: (AXIS2-3462) WSDL2C:

Posted by "Dave Meier (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2-3462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dave Meier updated AXIS2-3462:
------------------------------

    Description: 
Using:

org.apache.axis2.wsdl.WSDL2C -f -uri aewebservicesaxis70.wsdl -o aewebservicesaxis70 -d adb -ss -sd

Problem:

In the serialize methods, the namespaces hashtable is being freed for many of my adb objects, but one object that is nested frees this hashtable, then returns and the calling serialize method then tries to use the freed table and crashes.

Here's a code fragment showing the calling serialize method (adb_NameValue_serialize(...)):

  if (!_NameValue->is_valid_setValueBy)
  {
    /* no need to complain for minoccurs=0 element */
  }
  else
  {
    start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
      (4 + axutil_strlen(p_prefix) + 
      axutil_strlen("setValueBy") + 
      ADB_DEFAULT_DIGIT_LIMIT* 2)); 

    end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
      (5 + ADB_DEFAULT_DIGIT_LIMIT + axutil_strlen("setValueBy")));

    /*
    * parsing setValueBy element
    */

    sprintf(start_input_str, "<%s%ssetValueBy",
      p_prefix?p_prefix:"",
      (p_prefix && axutil_strcmp(p_prefix, ""))?":":""); 

    start_input_str_len = axutil_strlen(start_input_str);
    sprintf(end_input_str, "</%s%ssetValueBy>",
      p_prefix?p_prefix:"",
      (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
    end_input_str_len = axutil_strlen(end_input_str);

    if(!adb_Set_Value_By_is_particle())
    {
      axutil_stream_write(stream, env, start_input_str, start_input_str_len);
    }

    adb_Set_Value_By_serialize(_NameValue->property_setValueBy, 
      env, current_node, parent_element,
      adb_Set_Value_By_is_particle() || AXIS2_FALSE, namespaces, next_ns_index);  // THIS IS WHERE namespaces gets freed

    if(!adb_Set_Value_By_is_particle())
    {
      axutil_stream_write(stream, env, end_input_str, end_input_str_len);
    }

  } 

  if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "urn:aewebservicesaxis70", AXIS2_HASH_KEY_STRING)))  // THIS IS WHERE it gets used again and crashes
...

I will attach my wsdl file and the two adb files involved in the code above ( adb_NameValue.c which contains the above code and adb_Set_Value_By.c which contains the adb_Set_Value_By_serialize(...) method that frees the namespaces hashtable.


  was:
Using:

org.apache.axis2.wsdl.WSDL2C -f -uri aewebservices70.wsdl -o aewebservicesaxis70 -d adb -ss -sd

Problem:

In the serialize methods, the namespaces hashtable is being freed for many of my adb objects, but one object that is nested frees this hashtable, then returns and the calling serialize method then tries to use the freed table and crashes.

Here's a code fragment showing the calling serialize method (adb_NameValue_serialize(...)):

  if (!_NameValue->is_valid_setValueBy)
  {
    /* no need to complain for minoccurs=0 element */
  }
  else
  {
    start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
      (4 + axutil_strlen(p_prefix) + 
      axutil_strlen("setValueBy") + 
      ADB_DEFAULT_DIGIT_LIMIT* 2)); 

    end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
      (5 + ADB_DEFAULT_DIGIT_LIMIT + axutil_strlen("setValueBy")));

    /*
    * parsing setValueBy element
    */

    sprintf(start_input_str, "<%s%ssetValueBy",
      p_prefix?p_prefix:"",
      (p_prefix && axutil_strcmp(p_prefix, ""))?":":""); 

    start_input_str_len = axutil_strlen(start_input_str);
    sprintf(end_input_str, "</%s%ssetValueBy>",
      p_prefix?p_prefix:"",
      (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
    end_input_str_len = axutil_strlen(end_input_str);

    if(!adb_Set_Value_By_is_particle())
    {
      axutil_stream_write(stream, env, start_input_str, start_input_str_len);
    }

    adb_Set_Value_By_serialize(_NameValue->property_setValueBy, 
      env, current_node, parent_element,
      adb_Set_Value_By_is_particle() || AXIS2_FALSE, namespaces, next_ns_index);  // THIS IS WHERE namespaces gets freed

    if(!adb_Set_Value_By_is_particle())
    {
      axutil_stream_write(stream, env, end_input_str, end_input_str_len);
    }

  } 

  if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "urn:aewebservicesaxis70", AXIS2_HASH_KEY_STRING)))  // THIS IS WHERE it gets used again and crashes
...

I will attach my wsdl file and the two adb files involved in the code above ( adb_NameValue.c which contains the above code and adb_Set_Value_By.c which contains the adb_Set_Value_By_serialize(...) method that frees the namespaces hashtable.



> WSDL2C: 
> --------
>
>                 Key: AXIS2-3462
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3462
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: codegen
>    Affects Versions: 1.3
>         Environment: Windows XP
>            Reporter: Dave Meier
>            Priority: Blocker
>         Attachments: adb_NameValue.c, adb_Set_Value_By.c, aewebservicesaxis70.wsdl
>
>
> Using:
> org.apache.axis2.wsdl.WSDL2C -f -uri aewebservicesaxis70.wsdl -o aewebservicesaxis70 -d adb -ss -sd
> Problem:
> In the serialize methods, the namespaces hashtable is being freed for many of my adb objects, but one object that is nested frees this hashtable, then returns and the calling serialize method then tries to use the freed table and crashes.
> Here's a code fragment showing the calling serialize method (adb_NameValue_serialize(...)):
>   if (!_NameValue->is_valid_setValueBy)
>   {
>     /* no need to complain for minoccurs=0 element */
>   }
>   else
>   {
>     start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
>       (4 + axutil_strlen(p_prefix) + 
>       axutil_strlen("setValueBy") + 
>       ADB_DEFAULT_DIGIT_LIMIT* 2)); 
>     end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
>       (5 + ADB_DEFAULT_DIGIT_LIMIT + axutil_strlen("setValueBy")));
>     /*
>     * parsing setValueBy element
>     */
>     sprintf(start_input_str, "<%s%ssetValueBy",
>       p_prefix?p_prefix:"",
>       (p_prefix && axutil_strcmp(p_prefix, ""))?":":""); 
>     start_input_str_len = axutil_strlen(start_input_str);
>     sprintf(end_input_str, "</%s%ssetValueBy>",
>       p_prefix?p_prefix:"",
>       (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
>     end_input_str_len = axutil_strlen(end_input_str);
>     if(!adb_Set_Value_By_is_particle())
>     {
>       axutil_stream_write(stream, env, start_input_str, start_input_str_len);
>     }
>     adb_Set_Value_By_serialize(_NameValue->property_setValueBy, 
>       env, current_node, parent_element,
>       adb_Set_Value_By_is_particle() || AXIS2_FALSE, namespaces, next_ns_index);  // THIS IS WHERE namespaces gets freed
>     if(!adb_Set_Value_By_is_particle())
>     {
>       axutil_stream_write(stream, env, end_input_str, end_input_str_len);
>     }
>   } 
>   if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "urn:aewebservicesaxis70", AXIS2_HASH_KEY_STRING)))  // THIS IS WHERE it gets used again and crashes
> ...
> I will attach my wsdl file and the two adb files involved in the code above ( adb_NameValue.c which contains the above code and adb_Set_Value_By.c which contains the adb_Set_Value_By_serialize(...) method that frees the namespaces hashtable.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org