BeelGroup / Docear-Desktop

Docear's desktop version (GPL)
296 stars 90 forks source link

.?Custom shortcut causes java.lang.AssertionError on startup #529

Open Oazrin opened 8 months ago

Oazrin commented 8 months ago

Some reasonable custom shortcuts lead to the app freezing on startup, and java.lang.AssertionError related to the shortcut appears as one of the last lines in the docearConsole.exe.

Detailed reproduction: Windows 10 system where Docear had been installed on the Admin accoun in the past, but has been uninstalled later. On a newly created user account, Docear 1.2.0.0_stable_build291 was downloaded as ZIP and extracted. docear.exe ran properly. Registration was skipped and it was started with an empty workspace. XChange viewer, previously installed on the Admin account, was selected as the PDF viewer. "Manually change PDF viewer settings" popup window was dismissed. Docear was restarted a few times to check if it starts again properly. Every time it ran as expected. Then, a new key binding was made (by clicking CTRL while hovering on the Save All element in Main Menu). It was set to CTRL S. Docear was closed. When it was ran again, the PDF prompt windows popped up, but the app itself didnt fully open. Only the starting screen was visible and it was stuck like that. Without closing it or killing the process, docearConsole.exe was run. It showed PDF viewer popups again, and then froze. The log ended with the following:

STDOUT: Framework launched
STDOUT: REMINDERHOOK: org.freeplane.features.mode.mindmapmode.MModeController@92c77abDec 06, 2023 5:28:10 AM org.freeplane.core.util.LogUtils info
INFO: requesting mode: MindMap

STDERR: Exception in thread "AWT-EventQueue-0"
STDERR: java.lang.AssertionError: unexpected action for accelerator ctrl pressed S
STDERR:         at org.freeplane.core.ui.ribbon.RibbonAcceleratorManager.removeAccelerator(RibbonAcceleratorManager.java:123)
STDERR:         at org.freeplane.core.ui.ribbon.RibbonAcceleratorManager.setAccelerator(RibbonAcceleratorManager.java:83)
STDERR:         at org.freeplane.core.ui.ribbon.RibbonAcceleratorManager.loadAcceleratorPresets(RibbonAcceleratorManager.java:251)
STDERR:         at org.freeplane.core.ui.ribbon.RibbonBuilder.buildRibbon(RibbonBuilder.java:123)
STDERR:         at org.freeplane.features.ui.FrameController.selectMode(FrameController.java:419)
STDERR:         at org.freeplane.features.mode.Controller.selectMode(Controller.java:160)
STDERR:         at org.freeplane.features.mode.Controller.selectMode(Controller.java:173)
STDERR:         at org.freeplane.main.application.LastOpenedList.open(LastOpenedList.java:219)
STDERR:         at org.freeplane.main.application.LastOpenedList.safeOpen(LastOpenedList.java:283)
STDERR:         at org.freeplane.main.application.LastOpenedList.safeOpen(LastOpenedList.java:277)
STDERR:         at org.freeplane.main.application.LastOpenedList.openMapsOnStart(LastOpenedList.java:243)
STDERR:         at org.freeplane.main.application.FreeplaneGUIStarter.loadMaps(FreeplaneGUIStarter.java:250)
STDERR:         at org.freeplane.main.application.FreeplaneGUIStarter.access$000(FreeplaneGUIStarter.java:77)
STDERR:         at org.freeplane.main.application.FreeplaneGUIStarter$1.run(FreeplaneGUIStarter.java:212)
STDERR:         at java.awt.event.InvocationEvent.dispatch(Unknown Source)
STDERR:         at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
STDERR:         at java.awt.EventQueue.access$500(Unknown Source)
STDERR:         at java.awt.EventQueue$3.run(Unknown Source)
STDERR:         at java.awt.EventQueue$3.run(Unknown Source)
STDERR:         at java.security.AccessController.doPrivileged(Native Method)
STDERR:         at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
STDERR:         at java.awt.EventQueue.dispatchEvent(Unknown Source)
STDERR:         at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
STDERR:         at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
STDERR:         at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
STDERR:         at java.awt.WaitDispatchSupport$2.run(Unknown Source)
STDERR:         at java.awt.event.InvocationEvent.dispatch(Unknown Source)
STDERR:         at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
STDERR:         at java.awt.EventQueue.access$500(Unknown Source)
STDERR:         at java.awt.EventQueue$3.run(Unknown Source)
STDERR:         at java.awt.EventQueue$3.run(Unknown Source)
STDERR:         at java.security.AccessController.doPrivileged(Native Method)
STDERR:         at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
STDERR:         at java.awt.EventQueue.dispatchEvent(Unknown Source)
STDERR:         at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
STDERR:         at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
STDERR:         at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
STDERR:         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
STDERR:         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
STDERR:         at java.awt.EventDispatchThread.run(Unknown Source)

After the C:\Users\test.docear\ribbons\accelerator.properties file contents were deleted via a text editor, and then docearConsole.exe was ran again, everything started and worked as expected again.