Skip to content

[Issue] InterruptedException in ChatLounge #6861

Open
@IllianiBird

Description

@IllianiBird

Brief Description *

Seeing this error in the log when launching a game via the mm client

megamek.client.ui.swing.lobby.ChatLounge$ImageLoader.add(ChatLounge.java:3500) - 
java.lang.InterruptedException
	at java.base/java.util.concurrent.locks.ReentrantLock$Sync.lockInterruptibly(ReentrantLock.java:159)
	at java.base/java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:372)
	at java.base/java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:332)
	at megamek.client.ui.swing.lobby.ChatLounge$ImageLoader.add(ChatLounge.java:3498)
	at megamek.client.ui.swing.lobby.ChatLounge$BoardNameRenderer.getListCellRendererComponent(ChatLounge.java:3643)
	at java.desktop/javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1444)
	at java.desktop/javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1394)
	at java.desktop/javax.swing.plaf.basic.BasicListUI.getPreferredSize(BasicListUI.java:653)
	at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1725)
	at java.desktop/javax.swing.JList.getPreferredScrollableViewportSize(JList.java:2461)
	at java.desktop/javax.swing.ViewportLayout.preferredLayoutSize(ViewportLayout.java:100)
	at java.desktop/java.awt.Container.preferredSize(Container.java:1826)
	at java.desktop/java.awt.Container.getPreferredSize(Container.java:1810)
	at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1727)
	at java.desktop/javax.swing.ScrollPaneLayout.preferredLayoutSize(ScrollPaneLayout.java:500)
	at java.desktop/java.awt.Container.preferredSize(Container.java:1826)
	at java.desktop/java.awt.Container.getPreferredSize(Container.java:1810)
	at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1727)
	at java.desktop/javax.swing.BoxLayout.checkRequests(BoxLayout.java:476)
	at java.desktop/javax.swing.BoxLayout.minimumLayoutSize(BoxLayout.java:318)
	at java.desktop/java.awt.Container.minimumSize(Container.java:1878)
	at java.desktop/java.awt.Container.getMinimumSize(Container.java:1862)
	at java.desktop/javax.swing.JComponent.getMinimumSize(JComponent.java:1807)
	at java.desktop/javax.swing.plaf.basic.BasicSplitPaneUI$BasicHorizontalLayoutManager.minimumLayoutSize(BasicSplitPaneUI.java:1548)
	at java.desktop/javax.swing.plaf.basic.BasicSplitPaneUI.getMinimumSize(BasicSplitPaneUI.java:1173)
	at java.desktop/javax.swing.JComponent.getMinimumSize(JComponent.java:1805)
	at java.desktop/java.awt.GridLayout.minimumLayoutSize(GridLayout.java:390)
	at java.desktop/java.awt.Container.minimumSize(Container.java:1878)
	at java.desktop/java.awt.Container.getMinimumSize(Container.java:1862)
	at java.desktop/javax.swing.JComponent.getMinimumSize(JComponent.java:1807)
	at java.desktop/javax.swing.BoxLayout.checkRequests(BoxLayout.java:475)
	at java.desktop/javax.swing.BoxLayout.preferredLayoutSize(BoxLayout.java:293)
	at java.desktop/java.awt.Container.preferredSize(Container.java:1826)
	at java.desktop/java.awt.Container.getPreferredSize(Container.java:1810)
	at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1727)
	at java.desktop/javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateSize(BasicTabbedPaneUI.java:2706)
	at com.formdev.flatlaf.ui.FlatTabbedPaneUI$FlatTabbedPaneLayout.calculateSize(FlatTabbedPaneUI.java:3272)
	at java.desktop/javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.preferredLayoutSize(BasicTabbedPaneUI.java:2675)
	at java.desktop/java.awt.Container.preferredSize(Container.java:1826)
	at java.desktop/java.awt.Container.getPreferredSize(Container.java:1810)
	at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1727)
	at java.desktop/java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:724)
	at java.desktop/java.awt.Container.preferredSize(Container.java:1826)
	at java.desktop/java.awt.Container.getPreferredSize(Container.java:1810)
	at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1727)
	at java.desktop/javax.swing.plaf.basic.BasicSplitPaneUI$BasicHorizontalLayoutManager.getPreferredSizeOfComponent(BasicSplitPaneUI.java:1734)
	at java.desktop/javax.swing.plaf.basic.BasicSplitPaneUI$BasicHorizontalLayoutManager.getPreferredSizes(BasicSplitPaneUI.java:1987)
	at java.desktop/javax.swing.plaf.basic.BasicSplitPaneUI$BasicHorizontalLayoutManager.resetToPreferredSizes(BasicSplitPaneUI.java:2023)
	at java.desktop/javax.swing.plaf.basic.BasicSplitPaneUI$BasicHorizontalLayoutManager.layoutContainer(BasicSplitPaneUI.java:1424)
	at java.desktop/java.awt.Container.layout(Container.java:1541)
	at java.desktop/java.awt.Container.doLayout(Container.java:1530)
	at java.desktop/java.awt.Container.validateTree(Container.java:1725)
	at java.desktop/java.awt.Container.validateTree(Container.java:1734)
	at java.desktop/java.awt.Container.validateTree(Container.java:1734)
	at java.desktop/java.awt.Container.validate(Container.java:1660)
	at java.desktop/java.awt.CardLayout.show(CardLayout.java:556)
	at megamek.client.ui.swing.ClientGUI.switchPanel(ClientGUI.java:1233)
	at megamek.client.ui.swing.ClientGUI$1.gamePhaseChange(ClientGUI.java:2394)
	at megamek.common.event.GamePhaseChangeEvent.fireEvent(GamePhaseChangeEvent.java:68)
	at megamek.common.AbstractGame.fireGameEvent(AbstractGame.java:185)
	at megamek.common.Game.processGameEvent(Game.java:816)
	at megamek.common.Game.setPhase(Game.java:812)
	at megamek.common.IGame.receivePhase(IGame.java:127)
	at megamek.client.AbstractClient.changePhase(AbstractClient.java:511)
	at megamek.client.Client.changePhase(Client.java:170)
	at megamek.client.AbstractClient.handleGameIndependentPacket(AbstractClient.java:480)
	at megamek.client.AbstractClient.handlePacket(AbstractClient.java:386)
	at megamek.client.AbstractClient$1.lambda$packetReceived$0(AbstractClient.java:562)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)```

### 3. Steps to Reproduce

1. launch game
2. select start game
3. error is now in the log

### Attach Files

[megamek.log](https://github.com/user-attachments/files/19676014/megamek.log)

### Severity *

Medium (Gameplay Limitation): Non-core functionality is impaired, providing a suboptimal but playable experience.

### MegaMek Suite Version *

50.05

### Operating System *

macOS Sequoia 15.3.2

### Java Version *

J17

### Final Verification

- [x] I confirm this is a single, unique issue that hasn't been reported before
- [x] I have included all necessary information and files to help reproduce this issue
- [x] I have asked on MegaMek Discord about this issue
- [x] I have confirmed this issue is being opened on the correct repository: MegaMek, MegaMekLab, or MekHQ

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugSeverity: MediumIssues described as medium severity as per the new issue form

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions