Skip to content

NullPointerException when deleting many entries #5542

@ghost

Description

  1. Load up a bibliography file with about 1,000 references.
  2. Select all the entries.
  3. Press the Delete key.
  4. Confirm, if prompted.
22:18:58.081 [AWT-EventQueue-0] ERROR org.jabref.FallbackExceptionHandler - Uncaught exception occurred in Thread[AWT-EventQueue-0,6,main]
java.lang.NullPointerException: null
	at com.sun.javafx.text.PrismTextLayout.layout(PrismTextLayout.java:1209) ~[jfxrt.jar:?]
	at com.sun.javafx.text.PrismTextLayout.ensureLayout(PrismTextLayout.java:223) ~[jfxrt.jar:?]
	at com.sun.javafx.text.PrismTextLayout.getBounds(PrismTextLayout.java:246) ~[jfxrt.jar:?]
	at javafx.scene.text.Text.getLogicalBounds(Text.java:358) ~[jfxrt.jar:?]
	at javafx.scene.text.Text.getYRendering(Text.java:1069) ~[jfxrt.jar:?]
	at javafx.scene.text.Text.access$4400(Text.java:95) ~[jfxrt.jar:?]
	at javafx.scene.text.Text$TextAttribute$11.computeValue(Text.java:1785) ~[jfxrt.jar:?]
	at javafx.scene.text.Text$TextAttribute$11.computeValue(Text.java:1777) ~[jfxrt.jar:?]
	at javafx.beans.binding.ObjectBinding.get(ObjectBinding.java:153) ~[jfxrt.jar:?]
	at javafx.beans.binding.ObjectExpression.getValue(ObjectExpression.java:50) ~[jfxrt.jar:?]
	at javafx.beans.property.ObjectPropertyBase.get(ObjectPropertyBase.java:132) ~[jfxrt.jar:?]
	at com.sun.javafx.scene.control.skin.TextFieldSkin.lambda$new$412(TextFieldSkin.java:233) ~[jfxrt.jar:?]
	at com.sun.javafx.binding.ExpressionHelper$SingleInvalidation.fireValueChangedEvent(ExpressionHelper.java:137) ~[jfxrt.jar:?]
	at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81) ~[jfxrt.jar:?]
	at javafx.beans.property.ObjectPropertyBase.fireValueChangedEvent(ObjectPropertyBase.java:105) ~[jfxrt.jar:?]
	at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:112) ~[jfxrt.jar:?]
	at javafx.beans.property.ObjectPropertyBase.access$000(ObjectPropertyBase.java:51) ~[jfxrt.jar:?]
	at javafx.beans.property.ObjectPropertyBase$Listener.invalidated(ObjectPropertyBase.java:233) ~[jfxrt.jar:?]
	at com.sun.javafx.binding.ExpressionHelper$SingleInvalidation.fireValueChangedEvent(ExpressionHelper.java:137) ~[jfxrt.jar:?]
	at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81) ~[jfxrt.jar:?]
	at javafx.beans.binding.ObjectBinding.invalidate(ObjectBinding.java:172) ~[jfxrt.jar:?]
	at javafx.scene.text.Text.impl_geomChanged(Text.java:769) ~[jfxrt.jar:?]
	at javafx.scene.text.Text.needsTextLayout(Text.java:194) ~[jfxrt.jar:?]
	at javafx.scene.text.Text.needsFullTextLayout(Text.java:189) ~[jfxrt.jar:?]
	at javafx.scene.text.Text.access$200(Text.java:95) ~[jfxrt.jar:?]
	at javafx.scene.text.Text$2.invalidated(Text.java:389) ~[jfxrt.jar:?]
	at javafx.beans.property.StringPropertyBase.markInvalid(StringPropertyBase.java:109) ~[jfxrt.jar:?]
	at javafx.beans.property.StringPropertyBase.access$000(StringPropertyBase.java:49) ~[jfxrt.jar:?]
	at javafx.beans.property.StringPropertyBase$Listener.invalidated(StringPropertyBase.java:230) ~[jfxrt.jar:?]
	at com.sun.javafx.binding.ExpressionHelper$SingleInvalidation.fireValueChangedEvent(ExpressionHelper.java:137) ~[jfxrt.jar:?]
	at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81) ~[jfxrt.jar:?]
	at javafx.beans.binding.StringBinding.invalidate(StringBinding.java:171) ~[jfxrt.jar:?]
	at com.sun.javafx.binding.BindingHelperObserver.invalidated(BindingHelperObserver.java:51) ~[jfxrt.jar:?]
	at com.sun.javafx.binding.ExpressionHelper$Generic.fireValueChangedEvent(ExpressionHelper.java:349) ~[jfxrt.jar:?]
	at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81) ~[jfxrt.jar:?]
	at javafx.scene.control.TextInputControl$TextProperty.fireValueChangedEvent(TextInputControl.java:1389) ~[jfxrt.jar:?]
	at javafx.scene.control.TextInputControl$TextProperty.markInvalid(TextInputControl.java:1393) ~[jfxrt.jar:?]
	at javafx.scene.control.TextInputControl$TextProperty.set(TextInputControl.java:1324) ~[jfxrt.jar:?]
	at javafx.scene.control.TextInputControl.setText(TextInputControl.java:349) ~[jfxrt.jar:?]
	at org.jabref.gui.search.GlobalSearchBar.clearSearch(GlobalSearchBar.java:328) ~[JabRef-4.3.1.jar:?]
	at org.jabref.gui.search.GlobalSearchBar.performSearch(GlobalSearchBar.java:356) ~[JabRef-4.3.1.jar:?]
	at org.jabref.gui.BasePanel$SearchListener.listen(BasePanel.java:2101) ~[JabRef-4.3.1.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_201]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_201]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_201]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_201]
	at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:87) ~[JabRef-4.3.1.jar:?]
	at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:144) ~[JabRef-4.3.1.jar:?]
	at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:72) ~[JabRef-4.3.1.jar:?]
	at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:398) ~[JabRef-4.3.1.jar:?]
	at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:67) ~[JabRef-4.3.1.jar:?]
	at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:108) ~[JabRef-4.3.1.jar:?]
	at com.google.common.eventbus.EventBus.post(EventBus.java:212) ~[JabRef-4.3.1.jar:?]
	at org.jabref.model.database.BibDatabase.removeEntry(BibDatabase.java:252) ~[JabRef-4.3.1.jar:?]
	at org.jabref.model.database.BibDatabase.removeEntry(BibDatabase.java:236) ~[JabRef-4.3.1.jar:?]
	at org.jabref.gui.BasePanel.delete(BasePanel.java:837) ~[JabRef-4.3.1.jar:?]
	at org.jabref.gui.BasePanel.delete(BasePanel.java:803) ~[JabRef-4.3.1.jar:?]
	at org.jabref.gui.BasePanel.lambda$setupActions$4(BasePanel.java:401) ~[JabRef-4.3.1.jar:?]
	at org.jabref.gui.BasePanel.runCommand(BasePanel.java:1075) [JabRef-4.3.1.jar:?]
	at org.jabref.gui.JabRefFrame$GeneralAction.actionPerformed(JabRefFrame.java:2054) [JabRef-4.3.1.jar:?]
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) [?:1.8.0_201]
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) [?:1.8.0_201]
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) [?:1.8.0_201]
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) [?:1.8.0_201]
	at javax.swing.AbstractButton.doClick(AbstractButton.java:376) [?:1.8.0_201]
	at javax.swing.AbstractButton.doClick(AbstractButton.java:356) [?:1.8.0_201]
	at javax.swing.plaf.basic.BasicMenuItemUI$Actions.actionPerformed(BasicMenuItemUI.java:811) [?:1.8.0_201]
	at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1668) [?:1.8.0_201]
	at javax.swing.JComponent.processKeyBinding(JComponent.java:2882) [?:1.8.0_201]
	at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:699) [?:1.8.0_201]
	at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:706) [?:1.8.0_201]
	at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:706) [?:1.8.0_201]
	at javax.swing.JMenuBar.processKeyBinding(JMenuBar.java:677) [?:1.8.0_201]
	at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:307) [?:1.8.0_201]
	at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:293) [?:1.8.0_201]
	at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2974) [?:1.8.0_201]
	at javax.swing.JComponent.processKeyBindings(JComponent.java:2966) [?:1.8.0_201]
	at javax.swing.JComponent.processKeyEvent(JComponent.java:2845) [?:1.8.0_201]
	at java.awt.Component.processEvent(Component.java:6316) [?:1.8.0_201]
	at java.awt.Container.processEvent(Container.java:2239) [?:1.8.0_201]
	at java.awt.Component.dispatchEventImpl(Component.java:4889) [?:1.8.0_201]
	at java.awt.Container.dispatchEventImpl(Container.java:2297) [?:1.8.0_201]
	at java.awt.Component.dispatchEvent(Component.java:4711) [?:1.8.0_201]
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954) [?:1.8.0_201]
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:835) [?:1.8.0_201]
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1103) [?:1.8.0_201]
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:974) [?:1.8.0_201]
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:800) [?:1.8.0_201]
	at java.awt.Component.dispatchEventImpl(Component.java:4760) [?:1.8.0_201]
	at java.awt.Container.dispatchEventImpl(Container.java:2297) [?:1.8.0_201]
	at java.awt.Window.dispatchEventImpl(Window.java:2746) [?:1.8.0_201]
	at java.awt.Component.dispatchEvent(Component.java:4711) [?:1.8.0_201]
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760) [?:1.8.0_201]
	at java.awt.EventQueue.access$500(EventQueue.java:97) [?:1.8.0_201]
	at java.awt.EventQueue$3.run(EventQueue.java:709) [?:1.8.0_201]
	at java.awt.EventQueue$3.run(EventQueue.java:703) [?:1.8.0_201]
	at java.security.AccessController.doPrivileged(Native Method) [?:1.8.0_201]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) [?:1.8.0_201]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84) [?:1.8.0_201]
	at java.awt.EventQueue$4.run(EventQueue.java:733) [?:1.8.0_201]
	at java.awt.EventQueue$4.run(EventQueue.java:731) [?:1.8.0_201]
	at java.security.AccessController.doPrivileged(Native Method) [?:1.8.0_201]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) [?:1.8.0_201]
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730) [?:1.8.0_201]
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) [?:1.8.0_201]
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) [?:1.8.0_201]
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) [?:1.8.0_201]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [?:1.8.0_201]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) [?:1.8.0_201]
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) [?:1.8.0_201]
22:18:58.755 [JavaFX Application Thread] ERROR org.jabref.FallbackExceptionHandler - Uncaught exception occurred in Thread[JavaFX Application Thread,5,main]
java.lang.NullPointerException: null
	at com.sun.javafx.text.PrismTextLayout.getBounds(PrismTextLayout.java:283) ~[jfxrt.jar:?]
	at javafx.scene.text.Text.impl_computeGeomBounds(Text.java:1198) ~[jfxrt.jar:?]
	at javafx.scene.Node.updateGeomBounds(Node.java:3577) ~[jfxrt.jar:?]
	at javafx.scene.Node.getGeomBounds(Node.java:3530) ~[jfxrt.jar:?]
	at javafx.scene.Node.getLocalBounds(Node.java:3478) ~[jfxrt.jar:?]
	at javafx.scene.Node.updateTxBounds(Node.java:3641) ~[jfxrt.jar:?]
	at javafx.scene.Node.getTransformedBounds(Node.java:3424) ~[jfxrt.jar:?]
	at javafx.scene.Node.updateBounds(Node.java:559) ~[jfxrt.jar:?]
	at javafx.scene.Parent.updateBounds(Parent.java:1717) ~[jfxrt.jar:?]
	at javafx.scene.Parent.updateBounds(Parent.java:1717) ~[jfxrt.jar:?]
	at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2404) ~[jfxrt.jar:?]
	at com.sun.javafx.tk.Toolkit.lambda$runPulse$34(Toolkit.java:398) ~[jfxrt.jar:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_201]
	at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:397) ~[jfxrt.jar:?]
	at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:424) ~[jfxrt.jar:?]
	at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:518) ~[jfxrt.jar:?]
	at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:498) ~[jfxrt.jar:?]
	at com.sun.javafx.tk.quantum.QuantumToolkit.pulseFromQueue(QuantumToolkit.java:491) ~[jfxrt.jar:?]
	at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$291(QuantumToolkit.java:319) ~[jfxrt.jar:?]
	at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) ~[jfxrt.jar:?]
	at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) ~[jfxrt.jar:?]
	at com.sun.glass.ui.gtk.GtkApplication.lambda$null$203(GtkApplication.java:139) ~[jfxrt.jar:?]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: waiting-for-feedbackThe submitter or other users need to provide more information about the issue

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions