On Wed, Sep 25, 2013 at 7:36 PM, Tim Hoke <th...@northpeak.org> wrote:
> Why does this happen and how can I prevent it? > > To see the results, here is how to reproduce it (on Linux): > > $ strace -o hello.strace ./hello > > Here's the stat() calls which happened for my example: > > stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/auto/attributes", > 0x7586c0) = -1 ENOENT (No such file or directory) > stat("/home/user/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/auto/Compress/Raw/Zlib", > 0x7586c0) = -1 ENOENT (No such file or directory) > I can reproduce this and agree that a packed executable should not (try to) access stuff outside it's cache directory. However, looks like no harm is done here as almost all probes are for non-existent paths. Judging from the pattern of the probed paths my guess is that these come from within DynaLoader (and not from PAR or PAR::Packer). If that's the case, there's nothing you can do to prevent this. Maybe PAR::Packer could "convince" DynaLoader to change its behaviour (we already mangle the copy of DynaLoader.pm that is packed into the ecutable), but I wouldn't hold my breath... Cheers, Roderich