IDL 8.2+ immediately crashes at run-time if
/Applications/exelis/license/license.dat is populated. If neither the environment variable or the license file are present, IDL enters demo mode successfully.
IDL 8.2 Crash Message
$ idl IDL Version 8.2.3, Mac OS X (darwin x86_64 m64). (c) 2013, Exelis Visual Information Solutions, Inc. Segmentation fault: 11
IDL 8.3 Crash Message
$ idl IDL Version 8.3, Mac OS X (darwin x86_64 m64). (c) 2013, Exelis Visual Information Solutions, Inc. idl(3438,0x7fff736a7310) malloc: *** error for object 0xf07: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug Abort trap: 6
At run-time, if licensing data is provided by the end-user, IDL attempts to gather information about the local system’s network interfaces (specifically the MAC address). In our case IDL crashes because we have two external Thunderbolt monitors connected to the computer. If we remove one of the external displays IDL is able to continue on and retrieve a license without incident.
The system experiencing the crash has eleven network interfaces defined, consisting of Bluetooth (1), FireWire (2), WiFi (1), Thunderbolt Ethernet (2), On-board Ethernet (2), Bridge Adapters (2), and an IPSec VPN (1). Whether these interfaces are active or not means nothing, as IDL will try to poll each one for a valid MAC address.
IDL 8.2 Backtrace
The data left behind in /Library/Logs/DiagnosticReports was mildly useful with IDL 8.2. The “l_getid_hw” tried to read the hardware address of a given (unknown) ethernet device, but failed miserably in the process:
VM Regions Near 0x2540be570: mapped file 0000000106483000-0000000107af6000 [ 22.4M] r--/r-x SM=ALI /usr/share/icu/icudt51l.dat --> STACK GUARD 00007fff5bc00000-00007fff5f400000 [ 56.0M] ---/rwx SM=NUL stack guard for thread 0 Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libidl.8.2.dylib 0x000000010079d6df l_getid_hw + 34 <<<< HERE 1 libidl.8.2.dylib 0x000000010079d534 l_getid_type + 2064 2 libidl.8.2.dylib 0x000000010079cc65 l_gethostid + 26 3 libidl.8.2.dylib 0x00000001007866f6 checkout_from_server + 278 4 libidl.8.2.dylib 0x000000010078400a lm_start_real + 1048 5 libidl.8.2.dylib 0x000000010078343b l_checkout + 530 6 libidl.8.2.dylib 0x0000000100783157 lc_checkout + 191 7 libidl.8.2.dylib 0x00000001000ec7c2 IDL_lm_checkout2 + 184 8 libidl.8.2.dylib 0x00000001000eddc4 d_line + 103 9 libidl.8.2.dylib 0x00000001000eef7b init_system_routines + 699 10 libidl.8.2.dylib 0x000000010000c306 IDL_Initialize + 3591 11 libidl.8.2.dylib 0x000000010000c4b8 IDL_Main + 64 12 idl 0x0000000100000f11 main + 227 13 idl 0x0000000100000e0c start + 52
IDL 8.3 Backtrace
Unfortunately, IDL 8.3’s crash report is essentially useless. No relevant information was given to help trace the error.
Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Application Specific Information: abort() called *** error for object 0xf07: pointer being freed was not allocated
Until Exelis releases a patch to address this issue I recommend unplugging your second monitor if you need to get your work done.
Note: We did not delete the unused Thunderbolt interfaces from
System Preferences -> Network to test whether this cleared things up or not. Maybe it does, maybe it doesn’t. Give it a try.
I’ll echo what David said – excellent bug report! I believe that this bug (IDL-69092) has been fixed in IDL 8.4, due out in just a few weeks. If you’re curious, this was a bug in the FlexLM driver. Here is the bug information from Flexera:
“lmhostid instability in the presence of multiple ethernet adapters. Previously, in the presence of several ethernet adapters, lmhostid and the callers of the lc_hostid API may experience a segmentation fault on OS X. This is now resolved. (FNP-9885)”
Apparently, Matlab and other products ran into the same issue.
Joe, once you’ve upgraded to IDL 8.4, could you post here and let us know if it’s fixed? If it’s still an issue, definitely contact email@example.com.
(Thanks again Chris!)