weedom wrote on Wed May 14 11:54:21 MEST 2008:
Environment: Ubuntu Hardy Heron (8.10?) Perl 5.8.8 PadWalker: not sure, but fresh install from Ubuntu repo this morning I can't really post code for commericial reasons, but if the below doesn't point to anything obvious with Eclipse I'll drum up a non-commercial example. Cheers WeeDom Output from Debugger Console: Loading DB routines from perl5db.pl version 1.28 Editor support available. Enter h or `h h' for help, or `man perldebug' for more help. main::(/home/dominic/workspace/BugCounter/project.bugcounter.pl:13): 13: my $dbh = DBI->connect($PRS_STORAGE{'PRS_DB_DSN'}, 14: $PRS_STORAGE{'PRS_DB_USER'}, $cvs_password); DB<1> printf $DB::OUT "%vd", $^V; 5.8.8 DB<2> print $DB::OUT eval { require PadWalker; PadWalker->VERSION(0.08) } 1.5 DB<3> . main::(/home/dominic/workspace/BugCounter/project.bugcounter.pl:13): 13: my $dbh = DBI->connect($PRS_STORAGE{'PRS_DB_DSN'}, 14: $PRS_STORAGE{'PRS_DB_USER'}, $cvs_password); DB<3> T DB<3> . main::(/home/dominic/workspace/BugCounter/project.bugcounter.pl:13): 13: my $dbh = DBI->connect($PRS_STORAGE{'PRS_DB_DSN'}, 14: $PRS_STORAGE{'PRS_DB_USER'}, $cvs_password); DB<3> . main::(/home/dominic/workspace/BugCounter/project.bugcounter.pl:13): 13: my $dbh = DBI->connect($PRS_STORAGE{'PRS_DB_DSN'}, 14: $PRS_STORAGE{'PRS_DB_USER'}, $cvs_password); DB<3> . main::(/home/dominic/workspace/BugCounter/project.bugcounter.pl:13): 13: my $dbh = DBI->connect($PRS_STORAGE{'PRS_DB_DSN'}, 14: $PRS_STORAGE{'PRS_DB_USER'}, $cvs_password); DB<3> ;{ do 'dumpvar_epic.pm' unless defined &dumpvar_epic::dump_lexical_vars; my $offset = 0; my $savout = select($DB::OUT); dumpvar_epic::dump_lexical_vars($offset); select($savout); }; DB<4> . main::(/home/dominic/workspace/BugCounter/project.bugcounter.pl:13): 13: my $dbh = DBI->connect($PRS_STORAGE{'PRS_DB_DSN'}, 14: $PRS_STORAGE{'PRS_DB_USER'}, $cvs_password); DB<4> n main::(/home/dominic/workspace/BugCounter/project.bugcounter.pl:17): 17: my @projects_to_be_analysed = readReviewIds(); DB<4> . main::(/home/dominic/workspace/BugCounter/project.bugcounter.pl:17): 17: my @projects_to_be_analysed = readReviewIds(); DB<4> . main::(/home/dominic/workspace/BugCounter/project.bugcounter.pl:17): 17: my @projects_to_be_analysed = readReviewIds(); DB<4> . main::(/home/dominic/workspace/BugCounter/project.bugcounter.pl:17): 17: my @projects_to_be_analysed = readReviewIds(); DB<4> . main::(/home/dominic/workspace/BugCounter/project.bugcounter.pl:17): 17: my @projects_to_be_analysed = readReviewIds(); DB<4> T DB<4> . main::(/home/dominic/workspace/BugCounter/project.bugcounter.pl:17): 17: my @projects_to_be_analysed = readReviewIds(); DB<4> ;{ do 'dumpvar_epic.pm' unless defined &dumpvar_epic::dump_lexical_vars; my $offset = 0; my $savout = select($DB::OUT); dumpvar_epic::dump_lexical_vars($offset); select($savout); }; 4|$dbh|1|2|14|REF(0x825d134)|23|DBI::db=HASH(0x8c7aae8)|3|...|1|3 DB<5> ;{ do 'dumpvar_epic.pm' unless defined &dumpvar_epic::dump_lexical_vars; my $offset = 0; my $varexpr = <<'EOT'; ${$h->{'$dbh'}} EOT my $subref = \&dumpvar_epic::dump_hash_expr; my $savout = select($DB::OUT); my $savbuf = $|; $| = 0; $subref->($offset, $varexpr); $| = $savbuf; print ""; select($savout); }; Substitution replacement not terminated at (eval 25)[/home/dominic/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl:628] line 12. at (eval 25)[/home/dominic/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl:628] line 12 eval '\'; my $subref = \\&dumpvar_epic::dump_hash_expr; my $savout = s; ;' called at /home/dominic/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl line 628 DB::eval called at /home/dominic/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl line 3410 DB::DB called at /home/dominic/workspace/BugCounter/project.bugcounter.pl line 17 DB<6> Unmatched right curly bracket at (eval 26)[/home/dominic/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl:628] line 9, at end of line syntax error at (eval 26)[/home/dominic/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl:628] line 9, near "; }" DB<7> ;{ do 'dumpvar_epic.pm' unless defined &dumpvar_epic::dump_lexical_vars; my $offset = 0; my $varexpr = <<'EOT'; ${$h->{'$dbh'}} EOT my $subref = \&dumpvar_epic::dump_hash_expr; my $savout = select($DB::OUT); my $savbuf = $|; $| = 0; $subref->($offset, $varexpr); $| = $savbuf; print ""; select($savout); }; Substitution replacement not terminated at (eval 27)[/home/dominic/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl:628] line 12. at (eval 27)[/home/dominic/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl:628] line 12 eval '\'; my $subref = \\&dumpvar_epic::dump_hash_expr; my $savout = s; ;' called at /home/dominic/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl line 628 DB::eval called at /home/dominic/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl line 3410 DB::DB called at /home/dominic/workspace/BugCounter/project.bugcounter.pl line 17 DB<8> . Unmatched right curly bracket at (eval 28)[/home/dominic/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl:628] line 9, at end of line syntax error at (eval 28)[/home/dominic/workspace/.metadata/.plugins/org.epic.debug/perl5db.pl:628] line 9, near "; }" DB<9> main::(/home/dominic/workspace/BugCounter/project.bugcounter.pl:17): 17: my @projects_to_be_analysed = readReviewIds(); DB<9>
jploski wrote on Wed May 14 19:03:36 MEST 2008:
The "Unmatched right curly bracket" problem has been discussed extensively here before (see past threads), and I guess this is another such instance. Generally, perl5db.pl runs into trouble when it split commands sent by EPIC into two buffer-fulls at an arbitrary character position instead of executing them all together. Have a look at your perl5db.pl around the line with "$IN->recv" and insert some debugging statements there to find out if it's really happening.
weedom wrote on Thu May 15 08:51:28 MEST 2008:
thanks. I guess I was just looking for the wrong error message :) I'll have another dig through the forums, then, and see what I can find out.
weedom wrote on Thu May 15 09:32:02 MEST 2008:
had a go. Couldn't get patch /path/to/real/perl5db.pl patchfile.patch to work... it complained of bad headers in the patch file. So, being the bold type, I set about it manually. My perl5db.pl now reads like this, at the appropriate part. start quote: $OUT->write( join( '', @_ ) ); # Receive anything there is to receive. my $buf=''; my $stuff='x'; while(!($buf=~ m/\n/)&&length($stuff)>0){ $IN->recv( $stuff, 2048 ); # XXX "what's wrong with sysread?" # XXX Don't know. You tell me. $buf.=$stuff; } # What we got. $buf; } ## end if (ref $OUT and UNIVERSAL::isa... # No socket. Just read from the terminal. : end quote ############################################## but still getting the same error message. I inserted deliberate fluff into the code snippet and compared it with what is in workspace/.metadata/.plugins/org.epic.debug/perl5db.pl, and the changes are being copied across as expected? This is, naturally, a bit of a show-stopper with Eclipse/EPIC. Any other ideas? Regards Dominic
jploski wrote on Thu May 15 19:33:33 MEST 2008:
If you are using the gcj JVM (find out in Help/About Eclipse Platform), then you should switch to Sun's JVM and repeat the tests. If you are already using Sun's JVM, it would be interesting to print out the content of $buf before it gets executed. For example: open(FL, '>>/tmp/somefile.txt'); print FL "buf=>>>$buf<<<\n"; close(FL); To see if the commands are really cut off/split into multiple buffers.
Note: The above is an archived snapshot of a forum thread. Use the original thread at sf.net to post comments.