WSDL Load fail with StackOverflowError

Hi,

I am trying to load a SOAP WCF web service. And I get java.lang.StackOverflowError.
Below is the detailed error msg.

Could you please help me to figure this out?

Thanks,
Jiho

Is it possible to share with us this WSDL file?

Here’s my WSDL file.
I found if I remove namespace from ServiceContract and ServiceBehavior attributes then it loads the file.
However I would like to know why it doesn’t like those namespaces.

Please check the file and let me know any advice.

Thanks,
Jiho

WSDL.xml (26.0 KB)

Thanks for your information. We will double check on this WSDL file.

Hi, do we have any update on this issue? I found that happens when I use ServiceBehavior attribute with namespace in C#. I found a blog that mentioning a bug in RC0 that causes stack overflow when you’re using ServiceBehavior. Do you have any idea what it is about?

Referenced blog: https://viviendo20.wordpress.com/2017/02/15/control-generated-wsdl-in-wcf-namespaces/

Thanks,
Jiho

Hi dear friends
I have a same problem with this wsdl
http://www.dneonline.com/calculator.asmx?WSDL
This is a test wsdl. I have configured proxy settings also, but I got the same error message again

Hi,

I resolved my issue by having an extra service end point that inherits the original end point with overwritten service behavior attribute. Please see the below img. Make sure you don’t overwrite anything.

image

Thanks,
Jiho

1 Like

A StackOverflowError is simply signals that there is no more memory available. It is to the stack what an OutOfMemoryError is to the heap: it simply signals that there is no more memory available. JVM has a given memory allocated for each stack of each thread, and if an attempt to call a method happens to fill this memory, JVM throws an error. Just like it would do if you were trying to write at index N of an array of length N. No memory corruption can happen. The stack can not write into the heap.

The common cause for a stackoverflow is a bad recursive call. Typically, this is caused when your recursive functions doesn’t have the correct termination condition, so it ends up calling itself forever. Or when the termination condition is fine, it can be caused by requiring too many recursive calls before fulfilling it.

Here’s an example:

public class Overflow {
    public static final void main(String[] args) {
        main(args);
    }
}

That function calls itself repeatedly with no termination condition. Consequently, the stack fills up because each call has to push a return address on the stack, but the return addresses are never popped off the stack because the function never returns, it just keeps calling itself.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.