Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Selecting new entry causes editing panel to become corrupted and not accept input #3532

Closed
dvbowen opened this issue Dec 15, 2017 · 9 comments
Labels
bug Confirmed bugs or reports that are very likely to be bugs entry-editor ui

Comments

@dvbowen
Copy link

dvbowen commented Dec 15, 2017

MacOS 10.12.6
java version "1.8.0_151"
Version: JabRef-4.1-dev--snapshot--2017-12-08--master--6f39151a7.jar
Invoked with "java -jar" on a command line

I moved to using the latest version of JabRef a couple of days ago (as above), and
have a new bug. JabRef works well for while, but at a certain point, trying
to add a new entry causes the field area to hang and become
non-responsive. (Figure hopefully included.)

The following error is generated:

19:30:17.470 [JavaFX Application Thread] ERROR org.jabref.FallbackExceptionHandler - Uncaught exception occurred in Thread[JavaFX Application Thread,5,main]
java.lang.IndexOutOfBoundsException: [-2147483648, 16) is not a valid range within [0, 16)
at org.reactfx.util.Lists.checkRange(Lists.java:128) ~[JabRef-4.1-dev--snapshot--2017-12-08--master--6f39151a7.jar:?]
at org.reactfx.util.Lists.checkRange(Lists.java:123) ~[JabRef-4.1-dev--snapshot--2017-12-08--master--6f39151a7.jar:?]
at org.reactfx.collection.MemoizationListImpl.forget(MemoizationList.java:184) ~[JabRef-4.1-dev--snapshot--2017-12-08--master--6f39151a7.jar:?]
at org.fxmisc.flowless.CellListManager.cropTo(CellListManager.java:82) ~[JabRef-4.1-dev--snapshot--2017-12-08--master--6f39151a7.jar:?]
at org.fxmisc.flowless.CellPositioner.cropTo(CellPositioner.java:29) ~[JabRef-4.1-dev--snapshot--2017-12-08--master--6f39151a7.jar:?]
at org.fxmisc.flowless.Navigator.cropToNeighborhoodOf(Navigator.java:227) ~[JabRef-4.1-dev--snapshot--2017-12-08--master--6f39151a7.jar:?]
at org.fxmisc.flowless.Navigator.placeStartAtMayCrop(Navigator.java:200) ~[JabRef-4.1-dev--snapshot--2017-12-08--master--6f39151a7.jar:?]
at org.fxmisc.flowless.Navigator.visit(Navigator.java:129) ~[JabRef-4.1-dev--snapshot--2017-12-08--master--6f39151a7.jar:?]
at org.fxmisc.flowless.StartOffStart.accept(TargetPosition.java:85) ~[JabRef-4.1-dev--snapshot--2017-12-08--master--6f39151a7.jar:?]
at org.fxmisc.flowless.Navigator.layoutChildren(Navigator.java:78) ~[JabRef-4.1-dev--snapshot--2017-12-08--master--6f39151a7.jar:?]
at javafx.scene.Parent.layout(Parent.java:1087) ~[jfxrt.jar:?]
at org.fxmisc.flowless.VirtualFlow.layoutChildren(VirtualFlow.java:257) ~[JabRef-4.1-dev--snapshot--2017-12-08--master--6f39151a7.jar:?]
at javafx.scene.Parent.layout(Parent.java:1087) ~[jfxrt.jar:?]
at javafx.scene.Parent.layout(Parent.java:1093) ~[jfxrt.jar:?]
at javafx.scene.Parent.layout(Parent.java:1093) ~[jfxrt.jar:?]
at javafx.scene.Parent.layout(Parent.java:1093) ~[jfxrt.jar:?]
at javafx.scene.Scene.doLayoutPass(Scene.java:552) ~[jfxrt.jar:?]
at javafx.scene.Scene.preferredSize(Scene.java:1646) ~[jfxrt.jar:?]
at javafx.scene.Scene.impl_preferredSize(Scene.java:1720) ~[jfxrt.jar:?]
at javafx.stage.Window$9.invalidated(Window.java:846) ~[jfxrt.jar:?]
at javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:109) ~[jfxrt.jar:?]
at javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:144) ~[jfxrt.jar:?]
at javafx.stage.Window.setShowing(Window.java:922) ~[jfxrt.jar:?]
at javafx.stage.Window.show(Window.java:937) ~[jfxrt.jar:?]
at com.sun.javafx.stage.EmbeddedWindow.show(EmbeddedWindow.java:58) ~[jfxrt.jar:?]
at javafx.embed.swing.JFXPanel.lambda$addNotify$49(JFXPanel.java:799) ~[jfxrt.jar:?]
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) ~[jfxrt.jar:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_151]
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294) ~[jfxrt.jar:?]
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
~[jfxrt.jar:?]

The previous versions I was using,

JabRef-4.1-dev--snapshot--2017-11-13--master--c1d425a31.jar and

JabRef-4.1-dev--snapshot--2017-10-29--autofilelink--19481127d.jar

didn't have this problem.

screen shot 2017-12-14 at 7 40 10 pm

Clicking the check mark top-left of the panel closes and opens the panel correctly, but doesn't restore it to a working state. The following info is generated:

java.lang.RuntimeException: Requested texture dimensions (2516x2147483647) require dimensions (2516x0) that exceed maximum texture size (16384)
at com.sun.prism.es2.ES2RTTexture.create(ES2RTTexture.java:220)
at com.sun.prism.es2.ES2ResourceFactory.createRTTexture(ES2ResourceFactory.java:157)
at com.sun.javafx.tk.quantum.UploadingPainter.run(UploadingPainter.java:117)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.lang.Thread.run(Thread.java:748)

@tobiasdiez tobiasdiez added bug Confirmed bugs or reports that are very likely to be bugs entry-editor labels Dec 15, 2017
@algoterranean
Copy link

Have the same issue. Looks to be an overflow bug.

java.lang.IndexOutOfBoundsException: [-2147483648, 16)

Are older snapshot builds available anywhere?

@Siedlerchr
Copy link
Member

Siedlerchr commented Dec 17, 2017

@algoterranean
Could you please test the latest master from git? Unfortunately our build pipeline is broken atm due to a certificate issue, therefore the newer builds are not avaiable as binary.
Just do a git clone and aftwerwards a ./gradlew run to build and execute the version.
(You need to install a jdk8)

@algoterranean
Copy link

I am still getting an error with a clone of master (commit 15787da3c0):

11:04:52.401 [JavaFX Application Thread] ERROR org.jabref.FallbackExceptionHandler - Uncaught exception occurred in Thread[JavaFX Application Thread,5,main] java.lang.IndexOutOfBoundsException: [-2147483648, 12) is not a valid range within [0, 12) at org.reactfx.util.Lists.checkRange(Lists.java:128) ~[reactfx-2.0-M5.jar:?] at org.reactfx.util.Lists.checkRange(Lists.java:123) ~[reactfx-2.0-M5.jar:?] at org.reactfx.collection.MemoizationListImpl.forget(MemoizationList.java:184) ~[reactfx-2.0-M5.jar:?] at org.fxmisc.flowless.CellListManager.cropTo(CellListManager.java:82) ~[flowless-0.6.jar:?] at org.fxmisc.flowless.CellPositioner.cropTo(CellPositioner.java:29) ~[flowless-0.6.jar:?] at org.fxmisc.flowless.Navigator.cropToNeighborhoodOf(Navigator.java:227) ~[flowless-0.6.jar:?] at org.fxmisc.flowless.Navigator.placeStartAtMayCrop(Navigator.java:200) ~[flowless-0.6.jar:?] at org.fxmisc.flowless.Navigator.visit(Navigator.java:129) ~[flowless-0.6.jar:?] at org.fxmisc.flowless.StartOffStart.accept(TargetPosition.java:85) ~[flowless-0.6.jar:?] at org.fxmisc.flowless.Navigator.layoutChildren(Navigator.java:78) ~[flowless-0.6.jar:?] at javafx.scene.Parent.layout(Parent.java:1087) ~[jfxrt.jar:?] at org.fxmisc.flowless.VirtualFlow.layoutChildren(VirtualFlow.java:257) ~[flowless-0.6.jar:?] at javafx.scene.Parent.layout(Parent.java:1087) ~[jfxrt.jar:?] at javafx.scene.Parent.layout(Parent.java:1093) ~[jfxrt.jar:?] at javafx.scene.Parent.layout(Parent.java:1093) ~[jfxrt.jar:?] at javafx.scene.Parent.layout(Parent.java:1093) ~[jfxrt.jar:?] at javafx.scene.Scene.doLayoutPass(Scene.java:552) ~[jfxrt.jar:?] at javafx.scene.Scene.preferredSize(Scene.java:1646) ~[jfxrt.jar:?] at javafx.scene.Scene.impl_preferredSize(Scene.java:1720) ~[jfxrt.jar:?] at javafx.stage.Window$9.invalidated(Window.java:864) ~[jfxrt.jar:?] at javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:109) ~[jfxrt.jar:?] at javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:144) ~[jfxrt.jar:?] at javafx.stage.Window.setShowing(Window.java:940) ~[jfxrt.jar:?] at javafx.stage.Window.show(Window.java:955) ~[jfxrt.jar:?] at com.sun.javafx.stage.EmbeddedWindow.show(EmbeddedWindow.java:58) ~[jfxrt.jar:?] at javafx.embed.swing.JFXPanel.lambda$addNotify$51(JFXPanel.java:833) ~[jfxrt.jar:?] at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) ~[jfxrt.jar:?] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_152] at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294) ~[jfxrt.jar:?] at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) ~[jfxrt.jar:?]

@Siedlerchr
Copy link
Member

Okay. This error indicates a threading issue between the swing and javafx stuff.
Can you please tell exactly what you did? (E.g. using a context menu or menu point)
Do you have any custom types etc?
Are you on Windows/LInux/Mac?

@algoterranean
Copy link

I am on OSX 10.12.5, JDK 8u152.

I think I narrowed it down slightly. To replicate:

Start JabRef.
File -> New BibTex Library.
Add a new BibTex entry (using the toolbar icon)
image
Select Article button.
Select "{} BibTeX source" tab.
Enter/paste in bibtex entry.
Go to General tab.

Add new BibTex entry, using the toolbar again, select Article, and this is where the error occurs.

This error does not occur if I go, for example, to Required Fields tab after the BibTex entry. I haven't tested out all of the tabs yet, but so far it only occurs if I go to the General tab.

Hope that makes sense.

@Siedlerchr Siedlerchr added the ui label Dec 17, 2017
@Siedlerchr
Copy link
Member

Siedlerchr commented Dec 17, 2017

Thanks for the detailed steps,
I could reproduce this on Windows, too and I tried to track it down, but with no success atm. There must be sth wrong with the interplay of swing/javafx in the entryeditor:
The main action happens inside the method in EntryEditor.java
public void setEntry(BibEntry entry) {
There must be sth wrong with the Threads. I also tried wrapping another few things in the FX Thread, but with no sucess. Error persists

Btw, you can directly paste (and copy also) your bibtex code on the main table, it will then automatically create an entry.

@tobiasdiez
Copy link
Member

I investigated this problem a bit and found out the following:

  • It only happens for the "General" tab
  • You don't need to create new entries. The error also happens in the following scenario: edit source of one entry, switch to "General" tab, close entry editor, open entry editor again
  • It is important that you close and reopen the entry editor. If you switch to a different entry for example, everything works just find.

Strange bug. I'll wait until #3427 is merged and then have another look on how to fix it.

@algoterranean
Copy link

Thanks for the update.

@tobiasdiez
Copy link
Member

This should be fixed in the latest development version. Could you please check the build from https://builds.jabref.org/maintable-beta/. Thanks! Note this version is in a very early beta stage and might not work as expected. See #3621 for further details.

Maintable in JavaFX automation moved this from To Do (nice to have) to Done Jan 29, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Confirmed bugs or reports that are very likely to be bugs entry-editor ui
Projects
No open projects
Development

No branches or pull requests

4 participants