#674 Mac OS X 10.9.2 Update Issue (VPN) - Eclipse Perl debugger issues while connected to VPN

v0.5.x
open
nobody
1
2014-08-28
2014-07-09
No

Initial post on Apple Support Communities: https://discussions.apple.com/message/25268765

One of the big changes introduced by 10.9.2 update - are VPN changes (security fixes). Unfortunately, whatever these changes are - they "broke" Eclipse (OpenSource IDE) debugger. I am not sure if all programming languages (Eclipse plugins) are affected by this, but I know for sure that 'Epic' (Perl plugin) debugger stopped working while system is connected through VPN.

Here is the error that gets “popped-up” in the Eclipse:

Timed out while waiting for Perl debugger connection

… and here is exact exception stack that gets printed:

Unable to connect to remote host: 130.10.210.74:5000
Compilation failed in require.
at /Users/valeriy/workspace/ROBO-PROD-RA-685/src/lib/test/Val_test.pm line 0.
main::BEGIN() called at /Users/valeriy/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl line 0
eval {...} called at /Users/valeriy/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl line 0
BEGIN failed--compilation aborted.
at /Users/valeriy/workspace/ROBO-PROD-RA-685/src/lib/test/Val_test.pm line 0.
Can't use an undefined value as a symbol reference at /Users/valeriy/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl line 7596.
END failed--call queue aborted.
at /Users/valeriy/workspace/ROBO-PROD-RA-685/src/lib/test/Val_test.pm line 0.

(of course IP address changes dynamically for each VPN connection session)…

I was able to prove that this issue is related to 10.9.2 update:

  • Issue does not exist under 10.9.1 (I had to revert back to 10.9.1 to get it working again)
  • No updates were performed around the same time 10.9.2 update occurred (I verified that using Software Update log)
  • No configuration changes were introduced around the same time
  • Reverting back to 10.9.1 using Time Machine (thanks god I had backup !!!) fixed the issue

Steps to reproduce this issue (using Mac OS X 10.9.2 or higher):

  1. In Eclipse, try to use 'Epic' (Perl plugin) to debug any perl script while not connected through VPN
  2. Epic debugger works
  3. Connect to VPN
  4. Start Epic debugger to debug same script
  5. Debugger does not start, and "Timed out while waiting for Perl debugger connection" error pop-up comes up after some time. At the same time, exception stack (listed above) is printed in Eclipse's console

I am programmer/software developer, I work remotely (telecommute) and thus have to rely on use of VPN to connect to company's intranet. Perl - is primary language used by my team, and we use Eclipse IDE with Epic plugin - heavily. Use of Epic's debugger - is a very large aspect of my work, I cannot work without it. So in essense, 10.9.2 has entirely disrupted my ability to work! It took me almost a week to get back to normal work environment, and I cannot afford to let it happen again... I need Apple's development team resolve this VPN related issue, as soon as possible! Because of this issue, I am stuck with 10.9.1 and can not upgrade my laptop to any other versions. In fact, I had to disable system updates - just so I do not run into this issue again... I contacted Apple's Tech Support on 02/28 with this issue (Ref: 582428110), asking to raise trouble ticket. Since then, I tried to follow-up on that issue, but do not get any information - other than Eclipse (or Epic) developers need to update the system...

  • Val

Discussion

  • Please help eliminate this problem - it keeps me from upgrading my system to newer versions (it is at 10.9.4 currently, while I am still at 10.9.1) !!!

     
    • Jan Ploski
      Jan Ploski
      2014-07-09

      It is an EPIC implementation specific issue, other plugins will not likely be affected.

      In debug mode EPIC opens a listening socket on local port 5000 and then instructs perl -d to connect to this port.

      In your case perl -d is trying to connect to "130.10.210.74:5000". I suspect that the address 130.10.210.74, obtained in Java from InetAddress.getLocalHost().getHostAddress() - which in Linux seems to return the IP address that "ping hostname" would report in a bash shell - is for some reason not the address to which the listening socket was bound.

      The listening socket is bound without specifyinc a concrete IP address, so it should listen on all interfaces - using the special 0.0.0.0:5000 address. There is also an influence of whether the JVM was started with -Djava.net.preferIPv4Stack=true command-line option - if not, it may be using IPv6 stack instead (try specifying the option to see if it changes anything for you).

      You can also try opening an EPIC debug session and then use "netstat -an | grep 5000" and "ping hostname" to compare the listening and resolved IP addresses in working and non-working configuration.

       
    • Jan Ploski
      Jan Ploski
      2014-07-09

      Here's another troubleshooting idea: try to make sure that ping hostname reports the same local IP address regardless of whether or not you're connected to a VPN. It might be possible to achieve this by adding a line like "127.0.0.1 yourhostname" to /etc/hosts. Instead of 127.0.0.1 you may want to use an actual IP address reported by ifconfig; other software may be also affected by changing /etc/hosts. This tip is based on Linux behavior, hostname resolution in OS X may be different. It may be also affected by other pieces of machine-specific configuration.