I trimmed the jstack output to show the offending problem. It seems that one of the serial ports on your Mac is stuck, so when JSSC attempts to open it to confirm it is a real serial port (not a broken link in the file system), the open() system service call hangs. The reason the open is occurring is because YAAC is trying to pre-populate the drop-down list of available serial port names for your convenience, so it asks JSSC to get it that list. Unfortunately, it's not telling us which serial port file it's trying to open.
The file name pattern JSSC looks for on a Mac is /dev/tty.serial.* /dev/tty.usbserial.* /dev/tty.usbmodem.* and apparently Mac OS X does not honor the O_NDELAY (non-blocking) flag on the open() system call for a serial port. Do you have any strange devices that look like serial ports on your system but aren't really? Andrew, KA2DDO author of YAAC ________________________________________ From: [email protected] <[email protected]> on behalf of Matthew Wishek Sent: Wednesday, December 30, 2020 10:34 AM Subject: Re: [yaac-users] URGENT: new build#163 of YAAC, created 2020-Dec-29 Here is the output of the 'jstack' command on the sub-process: % jstack 17388 2020-12-30 07:31:31 Full thread dump Java HotSpot(TM) 64-Bit Server VM (15.0.1+9-18 mixed mode, sharing): ~~~~~~~ "AWT-EventQueue-0" #23 prio=6 os_prio=31 cpu=1908.38ms elapsed=127.87s tid=0x00007fa602050e00 nid=0x1ff03 runnable [0x000070000df81000] java.lang.Thread.State: RUNNABLE at jssc.SerialNativeInterface.openPort(Native Method) at jssc.SerialPortList.getUnixBasedPortNames(SerialPortList.java:333) at jssc.SerialPortList.getPortNames(SerialPortList.java:296) at jssc.SerialPortList.getPortNames(SerialPortList.java:178) at org.ka2ddo.yaac.os.OSAdapter$1.getSerialPortNames(OSAdapter.java:59) at org.ka2ddo.yaac.os.OSAdapter.getSerialPortNames(OSAdapter.java:89) at org.ka2ddo.yaac.os.OSAdapter.getCachedSerialPortNames(OSAdapter.java:101) at org.ka2ddo.yaac.gui.io.SerialTNCPortEditor.<init>(SerialTNCPortEditor.java:88) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0([email protected]/Native Method) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance([email protected]/NativeConstructorAccessorImpl.java:64) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance([email protected]/DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstanceWithCaller([email protected]/Constructor.java:500) at java.lang.reflect.Constructor.newInstance([email protected]/Constructor.java:481) at org.ka2ddo.yaac.gui.PortEditor.<init>(PortEditor.java:81) at org.ka2ddo.yaac.gui.config.ConfigurePorts.actionPerformed(ConfigurePorts.java:97) at javax.swing.AbstractButton.fireActionPerformed([email protected]/AbstractButton.java:1967) at javax.swing.AbstractButton$Handler.actionPerformed([email protected]/AbstractButton.java:2308) at javax.swing.DefaultButtonModel.fireActionPerformed([email protected]/DefaultButtonModel.java:405) at javax.swing.DefaultButtonModel.setPressed([email protected]/DefaultButtonModel.java:262) |