You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@netbeans.apache.org by Marc Streckfuß <ma...@gmail.com> on 2018/12/09 13:09:14 UTC

StackOverflow caused by TreeView#wlpc

Hey Guys,

So this issue is on Netbeans 8.2, I cannot test them with NB 9.0 yet as
I have other issues preventing an upgrade.
I am also talking about the Netbeans Platform Facility here, not
Netbeans itself.

I tried adding Properties Support by adding a Navigator with the Nodes
API, which works so far (I can see the Nodes in the Navigator panel).
The Problem is that selecting a Node in the Navigator leads to a
StackOverflowException because TreeView's Weak PropertyChangeListener
(that's my finding so far,  the debugger only shows that it's a
WeakListenerImpl) and EMLookup/ProxyLookup hang at ArrayList#addAll()
because it calls Collection#toArray, which in turn calls addAll at some
point.

java.lang.StackOverflowError
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.getComputed(ProxyLookup.java:1306)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1116)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1090)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1073)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.size(ProxyLookup.java:1158)
    at
org.openide.explorer.DefaultEMLookup$NoNodeLookup$ExclusionResult.allItems(DefaultEMLookup.java:254)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.computeSingleResult(ProxyLookup.java:1296)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1123)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1090)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1073)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.toArray(ProxyLookup.java:1179)
    at java.util.ArrayList.addAll(ArrayList.java:581)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1143)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1090)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1073)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.size(ProxyLookup.java:1158)
    at
org.openide.explorer.DefaultEMLookup$NoNodeLookup$ExclusionResult.allItems(DefaultEMLookup.java:254)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.computeSingleResult(ProxyLookup.java:1296)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1123)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1090)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1073)
    at
org.openide.util.lookup.ProxyLookup$LazyCollection.toArray(ProxyLookup.java:1179)
    at java.util.ArrayList.addAll(ArrayList.java:581)

With a Breakpoint on addAll I could see that it happens in
PropertyChangeSupport#fire() with a selectedNodes event.
Now since my code is really simple (actually only extending AbstractNode
and using the ChildFactory), I am unsure how to proceed/try to debug.

Also this kind of error has been seen on the issue tracker:
https://netbeans.org/bugzilla/show_bug.cgi?id=210689 (the exception is
only different since we have enough RAM)
Is there a way to find out what the fuzz is about those Lookups? Could
that be related to my code doing something wrong? or not registering
something to the lookup?
Is there a workaround to use the Properties Panel without Nodes? (as
that's essentially what I need, I already have a graphical
representation of the contents of the Navigator)

Thanks in Advance,
Marc Streckfuß




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@netbeans.apache.org
For additional commands, e-mail: users-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


Re: StackOverflow caused by TreeView#wlpc

Posted by Marc Streckfuß <ma...@gmail.com>.
Fortunately, I could solve the issue in the mean time after breaking it
all down to new AbstractNode(Children.LEAF);
My Problem was that I was using the wrong Lookup. I'm not knowledged
enough to judge whether this is just misuse or a case which could be
prevented by NB.

The Code I was basing this off is:
https://github.com/jMonkeyEngine/sdk/blob/master/jme3-materialeditor/src/com/jme3/gde/materialdefinition/navigator/MatDefNavigatorPanel.java#L127

I changed that line to mgr.setRootContext(new MyNode(lookup)); though,
but that shows the issue, I had to use new MyNode(data.getLookup());
"lookup" is not the lookup wanted anyway, but I wonder why that could
trigger an endless recursion, maybe because of the "ContextListener"
calling updateData?

Or is this related to ExplorerUtils.createLookup?

Am 09.12.18 um 16:35 schrieb Emilian Bold:
> If your code is really simple please provide a short example that
> reproduces the issue and post it here or preferably on Apache JIRA for
> the NETBEANS project.
>
> --emi
>
> http://coolbeans.xyz/ - CoolBeans: An IDE for Java, JavaEE, PHP and more!
> On Sun, Dec 9, 2018 at 5:11 PM Geertjan Wielenga
> <ge...@googlemail.com.invalid> wrote:
>> Provide a way to reproduce or a simple sample on GitHub etc, thanks.
>>
>> Gj
>>
>> On Sunday, December 9, 2018, Marc Streckfuß <ma...@gmail.com> wrote:
>>> Hey Guys,
>>>
>>> So this issue is on Netbeans 8.2, I cannot test them with NB 9.0 yet as
>>> I have other issues preventing an upgrade.
>>> I am also talking about the Netbeans Platform Facility here, not
>>> Netbeans itself.
>>>
>>> I tried adding Properties Support by adding a Navigator with the Nodes
>>> API, which works so far (I can see the Nodes in the Navigator panel).
>>> The Problem is that selecting a Node in the Navigator leads to a
>>> StackOverflowException because TreeView's Weak PropertyChangeListener
>>> (that's my finding so far,  the debugger only shows that it's a
>>> WeakListenerImpl) and EMLookup/ProxyLookup hang at ArrayList#addAll()
>>> because it calls Collection#toArray, which in turn calls addAll at some
>>> point.
>>>
>>> java.lang.StackOverflowError
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.getComputed(ProxyLookup.java:1306)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1116)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1090)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1073)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.size(ProxyLookup.java:1158)
>>>     at
>>> org.openide.explorer.DefaultEMLookup$NoNodeLookup$ExclusionResult.allItems(DefaultEMLookup.java:254)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.computeSingleResult(ProxyLookup.java:1296)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1123)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1090)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1073)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.toArray(ProxyLookup.java:1179)
>>>     at java.util.ArrayList.addAll(ArrayList.java:581)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1143)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1090)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1073)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.size(ProxyLookup.java:1158)
>>>     at
>>> org.openide.explorer.DefaultEMLookup$NoNodeLookup$ExclusionResult.allItems(DefaultEMLookup.java:254)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.computeSingleResult(ProxyLookup.java:1296)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1123)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1090)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1073)
>>>     at
>>> org.openide.util.lookup.ProxyLookup$LazyCollection.toArray(ProxyLookup.java:1179)
>>>     at java.util.ArrayList.addAll(ArrayList.java:581)
>>>
>>> With a Breakpoint on addAll I could see that it happens in
>>> PropertyChangeSupport#fire() with a selectedNodes event.
>>> Now since my code is really simple (actually only extending AbstractNode
>>> and using the ChildFactory), I am unsure how to proceed/try to debug.
>>>
>>> Also this kind of error has been seen on the issue tracker:
>>> https://netbeans.org/bugzilla/show_bug.cgi?id=210689 (the exception is
>>> only different since we have enough RAM)
>>> Is there a way to find out what the fuzz is about those Lookups? Could
>>> that be related to my code doing something wrong? or not registering
>>> something to the lookup?
>>> Is there a workaround to use the Properties Panel without Nodes? (as
>>> that's essentially what I need, I already have a graphical
>>> representation of the contents of the Navigator)
>>>
>>> Thanks in Advance,
>>> Marc Streckfuß
>>>
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@netbeans.apache.org
>>> For additional commands, e-mail: users-help@netbeans.apache.org
>>>
>>> For further information about the NetBeans mailing lists, visit:
>>> https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
>>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@netbeans.apache.org
> For additional commands, e-mail: users-help@netbeans.apache.org
>
> For further information about the NetBeans mailing lists, visit:
> https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@netbeans.apache.org
For additional commands, e-mail: users-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


Re: StackOverflow caused by TreeView#wlpc

Posted by Emilian Bold <em...@gmail.com>.
If your code is really simple please provide a short example that
reproduces the issue and post it here or preferably on Apache JIRA for
the NETBEANS project.

--emi

http://coolbeans.xyz/ - CoolBeans: An IDE for Java, JavaEE, PHP and more!
On Sun, Dec 9, 2018 at 5:11 PM Geertjan Wielenga
<ge...@googlemail.com.invalid> wrote:
>
> Provide a way to reproduce or a simple sample on GitHub etc, thanks.
>
> Gj
>
> On Sunday, December 9, 2018, Marc Streckfuß <ma...@gmail.com> wrote:
>>
>> Hey Guys,
>>
>> So this issue is on Netbeans 8.2, I cannot test them with NB 9.0 yet as
>> I have other issues preventing an upgrade.
>> I am also talking about the Netbeans Platform Facility here, not
>> Netbeans itself.
>>
>> I tried adding Properties Support by adding a Navigator with the Nodes
>> API, which works so far (I can see the Nodes in the Navigator panel).
>> The Problem is that selecting a Node in the Navigator leads to a
>> StackOverflowException because TreeView's Weak PropertyChangeListener
>> (that's my finding so far,  the debugger only shows that it's a
>> WeakListenerImpl) and EMLookup/ProxyLookup hang at ArrayList#addAll()
>> because it calls Collection#toArray, which in turn calls addAll at some
>> point.
>>
>> java.lang.StackOverflowError
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.getComputed(ProxyLookup.java:1306)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1116)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1090)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1073)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.size(ProxyLookup.java:1158)
>>     at
>> org.openide.explorer.DefaultEMLookup$NoNodeLookup$ExclusionResult.allItems(DefaultEMLookup.java:254)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.computeSingleResult(ProxyLookup.java:1296)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1123)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1090)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1073)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.toArray(ProxyLookup.java:1179)
>>     at java.util.ArrayList.addAll(ArrayList.java:581)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1143)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1090)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1073)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.size(ProxyLookup.java:1158)
>>     at
>> org.openide.explorer.DefaultEMLookup$NoNodeLookup$ExclusionResult.allItems(DefaultEMLookup.java:254)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.computeSingleResult(ProxyLookup.java:1296)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1123)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1090)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1073)
>>     at
>> org.openide.util.lookup.ProxyLookup$LazyCollection.toArray(ProxyLookup.java:1179)
>>     at java.util.ArrayList.addAll(ArrayList.java:581)
>>
>> With a Breakpoint on addAll I could see that it happens in
>> PropertyChangeSupport#fire() with a selectedNodes event.
>> Now since my code is really simple (actually only extending AbstractNode
>> and using the ChildFactory), I am unsure how to proceed/try to debug.
>>
>> Also this kind of error has been seen on the issue tracker:
>> https://netbeans.org/bugzilla/show_bug.cgi?id=210689 (the exception is
>> only different since we have enough RAM)
>> Is there a way to find out what the fuzz is about those Lookups? Could
>> that be related to my code doing something wrong? or not registering
>> something to the lookup?
>> Is there a workaround to use the Properties Panel without Nodes? (as
>> that's essentially what I need, I already have a graphical
>> representation of the contents of the Navigator)
>>
>> Thanks in Advance,
>> Marc Streckfuß
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@netbeans.apache.org
>> For additional commands, e-mail: users-help@netbeans.apache.org
>>
>> For further information about the NetBeans mailing lists, visit:
>> https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@netbeans.apache.org
For additional commands, e-mail: users-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


Re: StackOverflow caused by TreeView#wlpc

Posted by Geertjan Wielenga <ge...@googlemail.com.INVALID>.
Provide a way to reproduce or a simple sample on GitHub etc, thanks.

Gj

On Sunday, December 9, 2018, Marc Streckfuß <ma...@gmail.com>
wrote:

> Hey Guys,
>
> So this issue is on Netbeans 8.2, I cannot test them with NB 9.0 yet as
> I have other issues preventing an upgrade.
> I am also talking about the Netbeans Platform Facility here, not
> Netbeans itself.
>
> I tried adding Properties Support by adding a Navigator with the Nodes
> API, which works so far (I can see the Nodes in the Navigator panel).
> The Problem is that selecting a Node in the Navigator leads to a
> StackOverflowException because TreeView's Weak PropertyChangeListener
> (that's my finding so far,  the debugger only shows that it's a
> WeakListenerImpl) and EMLookup/ProxyLookup hang at ArrayList#addAll()
> because it calls Collection#toArray, which in turn calls addAll at some
> point.
>
> java.lang.StackOverflowError
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> getComputed(ProxyLookup.java:1306)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> computeDelegate(ProxyLookup.java:1116)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> delegate(ProxyLookup.java:1090)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> delegate(ProxyLookup.java:1073)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> size(ProxyLookup.java:1158)
>     at
> org.openide.explorer.DefaultEMLookup$NoNodeLookup$
> ExclusionResult.allItems(DefaultEMLookup.java:254)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.computeSingleResult(
> ProxyLookup.java:1296)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> computeDelegate(ProxyLookup.java:1123)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> delegate(ProxyLookup.java:1090)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> delegate(ProxyLookup.java:1073)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> toArray(ProxyLookup.java:1179)
>     at java.util.ArrayList.addAll(ArrayList.java:581)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> computeDelegate(ProxyLookup.java:1143)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> delegate(ProxyLookup.java:1090)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> delegate(ProxyLookup.java:1073)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> size(ProxyLookup.java:1158)
>     at
> org.openide.explorer.DefaultEMLookup$NoNodeLookup$
> ExclusionResult.allItems(DefaultEMLookup.java:254)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.computeSingleResult(
> ProxyLookup.java:1296)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> computeDelegate(ProxyLookup.java:1123)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> delegate(ProxyLookup.java:1090)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> delegate(ProxyLookup.java:1073)
>     at
> org.openide.util.lookup.ProxyLookup$LazyCollection.
> toArray(ProxyLookup.java:1179)
>     at java.util.ArrayList.addAll(ArrayList.java:581)
>
> With a Breakpoint on addAll I could see that it happens in
> PropertyChangeSupport#fire() with a selectedNodes event.
> Now since my code is really simple (actually only extending AbstractNode
> and using the ChildFactory), I am unsure how to proceed/try to debug.
>
> Also this kind of error has been seen on the issue tracker:
> https://netbeans.org/bugzilla/show_bug.cgi?id=210689 (the exception is
> only different since we have enough RAM)
> Is there a way to find out what the fuzz is about those Lookups? Could
> that be related to my code doing something wrong? or not registering
> something to the lookup?
> Is there a workaround to use the Properties Panel without Nodes? (as
> that's essentially what I need, I already have a graphical
> representation of the contents of the Navigator)
>
> Thanks in Advance,
> Marc Streckfuß
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@netbeans.apache.org
> For additional commands, e-mail: users-help@netbeans.apache.org
>
> For further information about the NetBeans mailing lists, visit:
> https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
>
>