Menu

#698 Debugging session stucks: recv() is deprecated on :utf8 handles

v0.6.x
closed-fixed
1
2018-03-19
2017-11-14
No

Eclipse IDE for Java Developers 4.5.0.20150621-1200
EPIC 0.6.57 org.epic.feature.main.feature.group Epic Project

I see the same symtoms John Arnold reported (see discussion). I tried to explore the root cause:

The communication between Eclipse and Perl (cygwin perl 5.26 version) is using a socket. The messages sent by Eclipse to Perl (perl5db.pl) are catched by the recv() function using the socket handle. With Perl 5.26 a handle using utf-8 layer is not allowed anymore with recv() function. Initially the socket is opended without utf-8 layer. But after generating the first debug command (step over or so) the socket handle gets extended by the utf-8 layer. Subsequently all debugging actions are brocken between Eclipse and Perl. The utf-8 layer extension is done in dumpvar_epic.pm (generated in the .metadata folder org.epic.debug):
binmode($DB::OUT, ":utf8");

2 alternative solutions I see (may be not correct):
1. disable this binmode line in dumpvar_expic.pm (might not be a good choice if source code under debug is using utf-8 coding)
2. add the line binmode $IN, ":raw"; in front of the recv() loop in perl5db.pl (perl5db.pl is owned by the perl developer group but this code is patched by EPIC for reliable break point reasons)

Error message generated by perl debugger:
An IOException occurred while executing debugger command
could not match re.IP_POS in {recv() is deprecated on :utf8 handles. This will be a fatal error in Perl 5.30 at /usr/lib/perl5/5.26/x86_64-cygwin-threads/IO/Socket.pm line 304.
at /usr/lib/perl5/5.26/x86_64-cygwin-threads/IO/Socket.pm line 304.
IO::Socket::recv(IO::Socket::INET=GLOB(0x60086b5d8), "", 2048) called at /......../.metadata/.plugins/org.epic.debug/perl5db.pl line 7358
DB::readline(" DB<28> ") called at /......../.metadata/.plugins/org.epic.debug/perl5db.pl line 1858
DB::_DB__read_next_cmd(undef) called at /......./.metadata/.plugins/org.epic.debug/perl5db.pl line 2786
DB::DB called at /....../Debug/Print_INC_Path.pl line 7
main::(/...../Debug/Print_INC_Path.pl:7):
7: my $i = 17;
}

Discussion

  • Jan Ploski

    Jan Ploski - 2018-02-08
    • status: open --> closed-fixed
    • assigned_to: Jan Ploski
     
  • Jan Ploski

    Jan Ploski - 2018-02-08

    Thanks for reporting. Fixed in EPIC 0.7.5.

     
  • Melinda Loubser

    Melinda Loubser - 2018-03-19

    I'm using EPIC 0.7.5 and Perl 5.26 but still having the same problem when stepping through code - any ideas?

     

Log in to post a comment.