Skip to content

[BUG] Exception regarding an uninitialized variable during PCGen shutdown procedure #7338

@Azhrei

Description

@Azhrei

Describe the bug
I received the following exception trace when I used the ⌘Q keystroke on macOS to exit the application:

2025-05-26T07:12:50.862894 SEVERE AWT-EventQueue-0 SkillRankControl:66 Asked to get total rank for null character. Location was 
java.lang.Throwable
	at pcgen.core.analysis.SkillRankControl.getTotalRank(SkillRankControl.java:66)
	at pcgen.gui2.facade.CharacterLevelsFacadeImpl.getSkillBreakdown(CharacterLevelsFacadeImpl.java:394)
	at pcgen.gui2.tabs.skill.SkillTreeViewModel.getData(SkillTreeViewModel.java:144)
	at pcgen.gui2.tabs.skill.SkillTreeViewModel.getData(SkillTreeViewModel.java:53)
	at pcgen.gui2.util.treeview.TreeViewTableModel$TreeViewNode.getValueAt(TreeViewTableModel.java:487)
	at pcgen.gui2.util.table.RowComparator.compare(SortableTableRowSorter.java:237)
	at pcgen.gui2.util.table.RowComparator.compare(SortableTableRowSorter.java:213)
	at java.base/java.util.Collections.indexedBinarySearch(Collections.java:335)
	at java.base/java.util.Collections.binarySearch(Collections.java:323)
	at pcgen.gui2.util.treeview.TreeViewTableModel$TreeViewNode.loadChildren(TreeViewTableModel.java:311)
	at java.desktop/javax.swing.JTree$DynamicUtilTreeNode.getChildCount(JTree.java:4138)
	at pcgen.gui2.util.treeview.TreeViewTableModel$TreeViewNode.removeTreeViewPath(TreeViewTableModel.java:353)
	at pcgen.gui2.util.treeview.TreeViewTableModel.removeElement(TreeViewTableModel.java:167)
	at pcgen.gui2.util.treeview.TreeViewTableModel.setElements(TreeViewTableModel.java:155)
	at pcgen.gui2.util.treeview.TreeViewTableModel$1.elementsChanged(TreeViewTableModel.java:68)
	at pcgen.facade.util.AbstractListFacade.fireElementsChanged(AbstractListFacade.java:161)
	at pcgen.facade.util.DefaultListFacade.setContents(DefaultListFacade.java:149)
	at pcgen.facade.util.DefaultListFacade.updateContents(DefaultListFacade.java:174)
	at pcgen.gui2.filter.FilteredTreeViewModel.refilter(FilteredTreeViewModel.java:113)
	at pcgen.gui2.filter.FilteredTreeViewModel.elementsChanged(FilteredTreeViewModel.java:134)
	at pcgen.facade.util.AbstractListFacade.fireElementsChanged(AbstractListFacade.java:161)
	at pcgen.facade.util.DelegatingListFacade.setDelegate(DelegatingListFacade.java:78)
	at pcgen.gui2.facade.DelegatingDataSet.detachDelegates(DelegatingDataSet.java:110)
	at pcgen.gui2.facade.CharacterFacadeImpl.closeCharacter(CharacterFacadeImpl.java:304)
	at pcgen.system.CharacterManager.removeCharacter(CharacterManager.java:442)
	at pcgen.gui2.PCGenFrame.closeAllCharacters(PCGenFrame.java:740)
	at pcgen.gui2.PCGenUIManager.closePCGen(PCGenUIManager.java:89)
	...

There were additional lines, but they related to the event handling. As you can see, the last line, above, is the method that begins the shutdown process... I have not investigated this any further yet.

To Reproduce
(I was able to recreate this using these steps. I'm not convinced it would be the same on other platforms.)

Steps to reproduce the behavior:

  1. Start PCGen
  2. Load a previously saved character
  3. Type ⌘Q on a macOS keyboard

Expected behavior
No exceptions during the closing down process.

Desktop (please complete the following information):

  • OS: macOS Sequoia 15.5
  • Browser: Safari (not relevant)
  • Version: 6.09.07 (cloned from GitHub)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions