".dll files can't change names"

That's partially true.  You can change the names of xs module dlls
because they are directly loaded.  The problem is any bundled dlls they
reference (e.g. ssleay32.dll) are indirectly loaded by the system.
Those dlls must have the original name, and must be found in the
executable directory or on the path.  

So, I think we're back to the suggestion of unpacking all files into the
normal lib structure with their original names.  Dependent libraries
should be unpacked with their original names at the top of the tree and
that directory should be added to the library search path.

--Scott

-----Original Message-----
From: Roderich Schupp [mailto:[EMAIL PROTECTED] 
Sent: Saturday, May 31, 2008 5:34 AM
To: Paul Miller
Cc: par@perl.org
Subject: Re: problem with POSIX package and par

On Fri, May 30, 2008 at 2:46 PM, Paul Miller <[EMAIL PROTECTED]>
wrote:
> On Fri, May 30, 2008 at 02:15:51PM +0200, Roderich Schupp wrote:
>> Do the Gtk2 modules use some non-standard procedure
>> to dynamically load their shared glue libraries
>> that foils PAR's intercept?
>
> No, standard.  I think the way PAR packs .so files is OK.  But in
> win32, the .dll files can't change names.  I learned about this
> business here:
>
> http://www.nntp.perl.org/group/perl.par/2006/09/msg2506.html

That particular message doesn't contain any facts concerning the
problem.
I read the whole thread and the bug tracker at rt.cpan.org, but failed
to see any explanation what is really going on here, only discussion
of crufty workarounds. Anyway, this thread may be moot, as
Audrey clearly states a tracker entry that certain failures wrt
intercepting DynaLoader have been fixed in PAR 0.952.

"...in win32, the .dll files can't change names" is definitely wrong,
as the hash-renaming definitely works for all core Perl modules (with
shared library parts). The Gtk Perl bindings (and apparently similar
things like the Wx bindings) must do something different from
the average XS module.

Could be something like (spoken in Linux terms) Gtk2.so
(the glue shared library for gtk2+) statically referencing (on the
shared
library level) Glib.so (the glue library for glib)... nope, at least
not on Linux Or Gtk2.so dynamically dlopening Glib.so...
nope either. Hmmm... I'll try to investigate on Windows
using the Syinternals tools tonite.

Cheers, Roderich



>
> It is my understanding that any module that loads the dlls from
> another package will fail in some way because of the hash
> renaming.  This new POSIX problem leads me to believe it happens
> under simpler circumstances as well.
>
> On Fri, May 30, 2008 at 11:14:29AM +0200, Steffen Mueller wrote:
>> > I was able to get PAR to work with Gtk2-perl by extracting all
>> > the packed modules into a non-renamed lib dir and then filtering
>> > PAR's @INC subs out of the stack.
>>
>> What a gruesome thing to do :/
>
> Yes it really is.  I wrote a module to do it for me, but I'm not
> necessarily proud of it.
>
> http://voltar.org/grm/#gtk2-perl-PAR
>
> I'm excited by your openness to changing the way the unpacker
> works.  I assumed there was some really important reason for
> doing it -- like collisions or something.
>
> My kludge unpacker makes a separate directory for each par in the
> executable.  I imagined that would resolve conflicts.
>
> Eh.
>
> -Paul
>
> --
> If riding in an airplane is flying, then riding in a boat is swimming.
> 85 jumps, 36.0 minutes of freefall, 69.1 freefall miles.
>

Reply via email to