On Tue, Apr 1, 2008 at 11:43 PM, Mock, George <[EMAIL PROTECTED]> wrote: > The executables work fine on Windows and Linux machines. Except one > customer of mine, who is running a Linux executable, see this error: > > Can't locate object method "new" via package "XML::Parser" at > XML/Simple.pm line 404, <STDIN> line 1. > > I asked the customer to zip up the /tmp/par-username directory and send > it to me. I cannot find anything amiss in it. In particular, when I > look at the file Parser.pm I plainly see the line ... > > sub new { > > So, I'm stuck. I'd appreciate any thoughts on what I should try next.
Advise your customer to run your executable under strace strace -f -o strace.out -e trace=file,process your.exe ... and send you strace.out. I suspect that either your pp'ed executable is missing something that's accidentically present on all machines except this customer's or it's something that is accidentically present only on this machine, but in an incompatible version, and taking precedence over the version packed into the executable. So I would examine strace.out for files pulled in (i.e. an open() call that succeeds) from outside /tmp/par-USER (ruling out the expected, e.g. /lib/libc.so.6) and also failing "searches", i.e. consecutive unsuccessful open() calls for the same file in different directories that don't end with a successfull open(). Since XML::Parser::Expat is involved I would especially check which libexpat.so.? is pulled in and whether it cleanly resolves with the packed XML/Parser/Expat.so - Perl's dynamic loading of shared libraries is known to fail sometimes without throwing an appropriate error. Cheers, Roderich