Subject: Re: Rebase 1.5-1: Causes invalid page fault
From: Jason Tishler <[email-masked]>
To: Nicholas Wourms <[email-masked]>
Cc: [email-masked]
Date: Tue, 18 Jun 2002 16:17:29 -0400

Nicholas,

On Tue, Jun 18, 2002 at 11:21:58AM -0700, Nicholas Wourms wrote:
> $ rebase -d -b 0x68000000 -o 0x10000 cygXpm-X4.dll cygXpm-noX4.dll
> C:\Cygnus\cygwin\bin\cygXpm-X4.dll: new base = 67ff0000, new size = 10000 
> C:\Cygnus\cygwin\bin\cygXpm-noX4.dll: new base = 67fe0000, new size = 10000

DLLs that get corrupted seem to display the expected output anyway.
Sigh...

> 2)I run it on cygXpm-X4.dll cygXpm-noX4.dll cygbz21.0.dll, and it
> pagefaults.
> 
> 3)I run it on cygbz21.0.dll alone and it pagefaults.
> 
> Now here's the *Interesting part*
> 
> 4)I run file on all three and the results are:
> 
> $ file cygXpm-X4.dll
> cygXpm-X4.dll: MS-DOS executable (EXE), OS/2 or MS Windows
> $ file cygXpm-noX4.dll
> cygXpm-noX4.dll: MS-DOS executable (EXE), OS/2 or MS Windows
> $ file cygbz21.0.dll
> cygbz21.0.dll: MS Windows PE Intel 80386 console DLL

You can also try objdump to test for corruption too:

    $ objdump -p cygcurl-2.dll
    objdump: cygcurl-2.dll: File format not recognized

> So it "works" on the dll's you say are corrupted but it won't work on the
> other dll's which are intact.

Maybe the two outcomes go through different code paths in ReBaseImage()?

> Now how did these dll's get corrupted in the first place is beyond me.

Maybe from a previous rebase run?  I strongly suggest playing with
copies of your DLLs -- not the originals.

> The further question is if they are indeed
> really corrupt?  I haven't noticed any problems with X, so I assume they
> aren't.  What is your thoughts on this?

Maybe you haven't used the corrupted DLLs?  I just tried with curl and
Windows popped up a dialog complaining that the DLL was "bad."

> I'm thinking I should run through gdb with a file like cygbz21.0.dll.

OK, but I'm not sure what more you will find.

> Also, I have installed the Platform SDK, so what arguments should I
> try with the rebase utility that comes with it?

I was going to suggest the above, but I wasn't sure if you had the SDK
or not.  Use the same arguments sans the offset (i.e., "-o") option
since the SDK's rebase doesn't support it.

BTW, under Windows 2000 I get the following:

    $ file cygXpm-*
    cygXpm-X4.dll:   MS Windows PE Intel 80386 console DLL
    cygXpm-noX4.dll: MS Windows PE Intel 80386 console DLL
    $ rebase -d -b 0x68000000 -o 0x10000 cygXpm-*
    C:\cygwin\tmp\cygXpm-X4.dll: new base = 67fe0000, new size = 20000
    C:\cygwin\tmp\cygXpm-noX4.dll: new base = 67fc0000, new size = 20000
    $ file cygXpm-*
    cygXpm-X4.dll:   MS Windows PE Intel 80386 console DLL
    cygXpm-noX4.dll: MS Windows PE Intel 80386 console DLL

Is it time to upgrade? :,)

Thanks,
Jason

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/