Open
Description
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