Thanks Colin. I should have looked at the issue tracker. Sorry about that.

On Mon, Jan 22, 2024 at 5:01 PM Colin Alworth <[email protected]> wrote:

> Thanks for reporting - perhaps better for the bug tracker, and indeed we
> do this (or something like it) filed already, see
> https://github.com/gwtproject/gwt/issues/9840.
>
> Your email title says that this is a compile time infinite loop, but then
> the body suggests that it was a runtime error. If it were to be exhibited
> at runtime, it would almost certainly be a stackoverflow rather than
> looping forever (barring some sort of tail call optimization). The actual
> loop that you're seeing is waaay up the stack in
>
> at
> com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.optimizeJsLoop(JavaToJavaScriptCompiler.java:1001)
>
> where the compiler decides to optimize until it reaches your optimization
> level, or until nothing changes. While SDM stands for "Super Dev Mode", it
> can also be understood to mean "Super Draft Mode", so the compiler builds
> as quickly and cheaply as possible, letting your app escape with very
> little optimization. This means that in SDM, you will not get stuck in this
> loop - the optimization loop won't run at all (see one frame up,
> shouldOptimize will return false), and you'll instead experience a
> stackoverflow at runtime.
>
> I didn't continue investigation of the problem further yet, but the linked
> ticket does have some analysis to consider.
> On Monday, January 22, 2024 at 8:30:50 AM UTC-6 Paul Robinson wrote:
>
>> I just found an infinite loop while running the GWT compiler.
>>
>> There was a trivial bug in my code which resulted in an infinite loop at
>> *runtime*. This is a method that was calling itself recursively. It was
>> inside a generic class, and the method had a single line that was something
>> like this:
>>
>> public class A<T extends B> extends C {
>>     public static <T extends B> A<T> getA(D d, E e, F f) {
>>         return getA(d, e, null);
>>     }
>> }
>>
>> I have been running in dev mode with it like this, but not hitting this
>> code so I didn't notice the infinite loop.
>>
>> Wanting to test GWT 2.11.0, I switched from GWT 2.10.0 and did a full GWT
>> compile. The interesting thing is that the GWT compile also hit an infinite
>> loop. Or rather, it was apparently infinite. I stopped it after 50 minutes,
>> where it would normally complete in about about 90 seconds. I dropped back
>> to 2.10.0, and found the same behaviour. So it's not caused by the new
>> release.
>>
>> Fixing the bug in my code meant it then compiled properly (in both 2.11.0
>> and 2.10.0).
>>
>> Is this interesting enough to warrant further investigation? This is code
>> inside a large application, so isolating a simple example that demonstrates
>> it might not work easily.
>>
>> FWIW there's a stack trace taken while stuck in the loop, compiling with
>> 2.11.0 here: https://pastebin.com/qckpswRD
>>
>> Paul
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "GWT Contributors" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/google-web-toolkit-contributors/58e74afc-7677-4a92-8895-880d884cd802n%40googlegroups.com
> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/58e74afc-7677-4a92-8895-880d884cd802n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAGHNWN%2Bej52aGjUnGKMMBKSjLiJCGQ_0Z1PtM6O2t_NoQHbXhg%40mail.gmail.com.

Reply via email to