Skip to content

SIGABRT in Arduino IDE 1.8.11 on secondary screen of dual-screen Mac #9764

Closed
@jtcours

Description

@jtcours

Arduino IDE 1.8.11 sometimes crashes with a SIGABRT. It seems to occur on a Mac with a secondary screen plugged into it, when the IDE tries to open a new window on the secondary screen.

I'm extending the desktop (not mirroring), with macOS Catalina 10.15.3 and Java 1.8.0_102. The system is a MacBook Air with an external monitor, and the crashes seem to happen when the IDE is running on the external monitor.

From /var/log/system.log:

Feb  9 20:19:28 zephyr com.apple.xpc.launchd[1] (cc.arduino.Arduino.18980[12902]): Service exited due to SIGABRT

Feb  9 21:02:39 zephyr com.apple.xpc.launchd[1] (cc.arduino.Arduino.18980[13352]): Service exited due to SIGABRT
Feb  9 21:04:14 zephyr com.apple.xpc.launchd[1] (com.apple.xpc.launchd.oneshot.0x1000001a.Arduino[27021]): Service exited due to SIGABRT

From the crash report:


Date/Time:             2020-02-09 21:04:14.278 -0800
OS Version:            Mac OS X 10.15.3 (19D76)
Report Version:        12
Anonymous UUID:        CF37A47B-E000-2C7F-3B88-C469EB1A00D8

Sleep/Wake UUID:       F0468D71-7D75-4004-9946-503F42AE9656

Time Awake Since Boot: 230000 seconds
Time Since Wake:       93000 seconds

System Integrity Protection: enabled

Crashed Thread:        17  Java: Java2D Queue Flusher

Exception Type:        EXC_BAD_INSTRUCTION (SIGABRT)
Exception Codes:       0x0000000000000001, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
-[NSOpenGLContext setView:] must be called from the main thread.

Thread 17 Crashed:: Java: Java2D Queue Flusher
0   libsystem_kernel.dylib        	0x00007fff66f047fa __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff66fc1bc1 pthread_kill + 432
2   libsystem_c.dylib             	0x00007fff66e8ba1c abort + 120
3   libjvm.dylib                  	0x000000010f8482c6 os::abort(bool) (.cold.1) + 125
4   libjvm.dylib                  	0x000000010f664fab os::abort(bool) + 33
5   libjvm.dylib                  	0x000000010f7fe2f9 VMError::report_and_die() + 2301
6   libjvm.dylib                  	0x000000010f259fe3 report_vm_error(char const*, int, char const*, char const*) + 93
7   libjvm.dylib                  	0x000000010f66a9f8 os::get_sender_for_C_frame(frame*) + 76
8   libjvm.dylib                  	0x000000010f25b234 print_native_stack(outputStream*, frame, Thread*, char*, int) + 336
9   libjvm.dylib                  	0x000000010f7fd153 VMError::report(outputStream*) + 2617
10  libjvm.dylib                  	0x000000010f7fddd7 VMError::report_and_die() + 987
11  libjvm.dylib                  	0x000000010f66ae07 JVM_handle_bsd_signal + 802
12  libjvm.dylib                  	0x000000010f66795f signalHandler(int, __siginfo*, void*) + 88
13  libsystem_platform.dylib      	0x00007fff66fb642d _sigtramp + 29
14  ???                           	000000000000000000 0 + 0
15  libawt_lwawt.dylib            	0x0000000115373281 CGLSD_MakeCurrentToScratch + 93
16  libawt_lwawt.dylib            	0x00000001153733d8 OGLSD_MakeOGLContextCurrent + 166
17  libawt_lwawt.dylib            	0x0000000115390e66 OGLContext_SetSurfaces + 188
18  libawt_lwawt.dylib            	0x00000001153956c3 Java_sun_java2d_opengl_OGLRenderQueue_flushBuffer + 1775
19  ???                           	0x0000000119b5ffad 0 + 4726325165
20  ???                           	0x0000000119b382bd 0 + 4726162109
21  ???                           	0x0000000119b382bd 0 + 4726162109
22  ???                           	0x0000000119b382bd 0 + 4726162109
23  ???                           	0x0000000119b30671 0 + 4726130289
24  libjvm.dylib                  	0x000000010f3f3c23 JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*) + 2243
25  libjvm.dylib                  	0x000000010f3f2462 JavaCalls::call_virtual(JavaValue*, KlassHandle, Symbol*, Symbol*, JavaCallArguments*, Thread*) + 626
26  libjvm.dylib                  	0x000000010f3f26af JavaCalls::call_virtual(JavaValue*, Handle, KlassHandle, Symbol*, Symbol*, Thread*) + 111
27  libjvm.dylib                  	0x000000010f48c2ed thread_entry(JavaThread*, Thread*) + 177
28  libjvm.dylib                  	0x000000010f7a33b3 JavaThread::thread_main_inner() + 373
29  libjvm.dylib                  	0x000000010f7a314f JavaThread::run() + 847
30  libjvm.dylib                  	0x000000010f664937 java_start(Thread*) + 250
31  libsystem_pthread.dylib       	0x00007fff66fc1e65 _pthread_start + 148
32  libsystem_pthread.dylib       	0x00007fff66fbd83b thread_start + 15

Thread 17 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x0000700008ec2000  rcx: 0x0000700008ec04c8  rdx: 0x0000000000000000
  rdi: 0x000000000000da13  rsi: 0x0000000000000006  rbp: 0x0000700008ec04f0  rsp: 0x0000700008ec04c8
   r8: 0x0000000000000010   r9: 0x0000700008ec0500  r10: 0x0000700008ec2000  r11: 0x0000000000000246
  r12: 0x000000000000da13  r13: 0x0000700008ec0670  r14: 0x0000000000000006  r15: 0x0000000000000016
  rip: 0x00007fff66f047fa  rfl: 0x0000000000000246  cr2: 0x000000010f084feb
  
Logical CPU:     0
Error Code:      0x02000148
Trap Number:     133

I noticed that OpenJDK has some bug reports of similar behavior in Java2D Queue Flusher but I don't know enough about the inner workings of the Arduino IDE and OpenJDK to know whether they might be related: https://bugs.openjdk.java.net/browse/JDK-8146238 https://bugs.openjdk.java.net/browse/JDK-8203611

Metadata

Metadata

Assignees

No one assigned

    Labels

    Component: IDEThe Arduino IDEOpenJDKIssues to be verified once OpenJDK (AdoptOpenJDK) is implementedType: Bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions