This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: clisp crashes on startup


On 7/9/12 2:01 PM, Reini Urban wrote:
> On Sat, Jul 7, 2012 at 2:07 PM, Daniel Colascione wrote:
>> On 7/7/2012 10:44 AM, marco atzeri wrote:
>>> On 7/7/2012 6:19 PM, Reini Urban wrote:
>>>> On Sat, Jul 7, 2012 at 8:41 AM, Daniel Colascione  wrote:
>>>>> On 7/7/12 6:04 AM, marco atzeri wrote:
>>>>>> On 7/7/2012 12:45 AM, Daniel Colascione wrote:
>>>>>>> $ clisp
>>>>
>>>> Looks like a missing dependency or wrong dll perm. I saw none in your
>>>> cygcheck.
>>>>
>>>> Can you try
>>>> $ ldd /usr/lib/clisp-2.48/base/lisp.exe
>>>> and see of one dll is missing.
>>>> And check if one of the dll's has no x perm set.
>>>
>>>
>>> $ cygcheck /usr/lib/clisp-2.48/base/lisp.exe
>>>
>>> should be better. ldd does not advise about missing dll's
>>
>> $ cygcheck /usr/lib/clisp-2.48/base/lisp.exe
>> C:\lib\clisp-2.48\base\lisp.exe
>>   C:\bin\cyggcc_s-1.dll
>>     C:\bin\cygwin1.dll
>>       C:\Windows\system32\KERNEL32.dll
>>         C:\Windows\system32\API-MS-Win-Core-RtlSupport-L1-1-0.dll
>>         C:\Windows\system32\ntdll.dll
>>         C:\Windows\system32\KERNELBASE.dll
>>         C:\Windows\system32\API-MS-Win-Core-ProcessThreads-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-Heap-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-Memory-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-Handle-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-Synch-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-File-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-IO-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-ThreadPool-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-LibraryLoader-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-NamedPipe-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-Misc-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-SysInfo-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-Localization-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-String-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-Debug-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-ErrorHandling-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-Fibers-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-Util-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Core-Profile-L1-1-0.dll
>>         C:\Windows\system32\API-MS-Win-Security-Base-L1-1-0.dll
>>   C:\bin\cygcrypt-0.dll
>>   C:\bin\cygiconv-2.dll
>>   C:\bin\cygintl-8.dll
>>   C:\bin\cygncurses-9.dll
>>   C:\bin\cygreadline7.dll
>>     C:\bin\cygncursesw-10.dll
>>     C:\Windows\system32\USER32.dll
>>       C:\Windows\system32\GDI32.dll
>>         C:\Windows\system32\API-MS-Win-Core-LocalRegistry-L1-1-0.dll
>>         C:\Windows\system32\LPK.dll
>>           C:\Windows\system32\USP10.dll
>>             C:\Windows\system32\msvcrt.dll
>>               C:\Windows\system32\API-MS-Win-Core-Console-L1-1-0.dll
>>               C:\Windows\system32\API-MS-Win-Core-DateTime-L1-1-0.dll
>>               C:\Windows\system32\API-MS-Win-Core-Interlocked-L1-1-0.dll
>>       C:\Windows\system32\ADVAPI32.dll
>>         C:\Windows\system32\API-MS-WIN-Service-Core-L1-1-0.dll
>>         C:\Windows\system32\API-MS-WIN-Service-winsvc-L1-1-0.dll
>>         C:\Windows\system32\API-MS-WIN-Service-Management-L1-1-0.dll
>>         C:\Windows\system32\API-MS-WIN-Service-Management-L2-1-0.dll
>>         C:\Windows\system32\RPCRT4.dll
>>           C:\Windows\system32\SspiCli.dll
>>             C:\Windows\system32\CRYPTBASE.dll
>>               C:\Windows\system32\API-MS-Win-Core-DelayLoad-L1-1-0.dll
>>             C:\Windows\system32\API-MS-Win-Security-LSALookup-L1-1-0.dll
>>   C:\bin\cygsigsegv-2.dll
>>   C:\Windows\system32\OLE32.dll
>>   C:\Windows\system32\OLEAUT32.DLL
>>
>> ldd doesn't report an error either. ldd's output _is_ a bit odd, however:
>>
>> $ ldd /usr/lib/clisp-2.48/full/lisp.exe
>>         ntdll.dll => /Windows/SysWOW64/ntdll.dll (0x7de70000)
>>         kernel32.dll => /Windows/syswow64/kernel32.dll (0x7dd60000)
>>         KERNELBASE.dll => /Windows/syswow64/KERNELBASE.dll (0x7d850000)
>>         cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0xc5ab0000)
>>         cygwin1.dll => /usr/bin/cygwin1.dll (0x61000000)
>>         cygcrypt-0.dll => /usr/bin/cygcrypt-0.dll (0xc6400000)
>>         cygdb-4.5.dll => /usr/bin/cygdb-4.5.dll (0xc5fd0000)
>>         cygfcgi-0.dll => /usr/bin/cygfcgi-0.dll (0xc5e90000)
>>         cyggdbm-4.dll => /usr/bin/cyggdbm-4.dll (0xc59e0000)
>>         cygiconv-2.dll => /usr/bin/cygiconv-2.dll (0xc4110000)
>>         cygintl-8.dll => /usr/bin/cygintl-8.dll (0xc40b0000)
>>         cygncurses-9.dll => /usr/bin/cygncurses-9.dll (0xc39e0000)
>>         cygpcre-0.dll => /usr/bin/cygpcre-0.dll (0xc37f0000)
>>         cygpq.dll => /usr/bin/cygpq.dll (0xc3050000)
>>         cygcrypto-0.9.8.dll => /usr/bin/cygcrypto-0.9.8.dll (0xc62c0000)
>>         cygz.dll => /usr/bin/cygz.dll (0xc21f0000)
>>         cygldap-2-3-0.dll => /usr/bin/cygldap-2-3-0.dll (0xc3e80000)
>>         cyglber-2-3-0.dll => /usr/bin/cyglber-2-3-0.dll (0xc3f00000)
>>         cygcrypto-1.0.0.dll => /usr/bin/cygcrypto-1.0.0.dll (0xc6130000)
>>         cygsasl2-2.dll => /usr/bin/cygsasl2-2.dll (0xc2e90000)
>>         cygssl-1.0.0.dll => /usr/bin/cygssl-1.0.0.dll (0xc2bd0000)
>>         cygssl-0.9.8.dll => /usr/bin/cygssl-0.9.8.dll (0xc2c30000)
>>         cygreadline7.dll => /usr/bin/cygreadline7.dll (0xc2f10000)
>>         cygncursesw-10.dll => /usr/bin/cygncursesw-10.dll (0xc3990000)
>>         USER32.dll => /Windows/syswow64/USER32.dll (0x7dc50000)
>>         GDI32.dll => /Windows/syswow64/GDI32.dll (0x7dab0000)
>>         LPK.dll => /Windows/syswow64/LPK.dll (0x7d620000)
>>         USP10.dll => /Windows/syswow64/USP10.dll (0x6f8e0000)
>>         msvcrt.dll => /Windows/syswow64/msvcrt.dll (0x6ff50000)
>>         ADVAPI32.dll => /Windows/syswow64/ADVAPI32.dll (0x77c60000)
>>         sechost.dll => /Windows/SysWOW64/sechost.dll (0x2b20000)
>>         RPCRT4.dll => /Windows/syswow64/RPCRT4.dll (0x7db50000)
>>         SspiCli.dll => /Windows/syswow64/SspiCli.dll (0x7d8a0000)
>>         CRYPTBASE.dll => /Windows/syswow64/CRYPTBASE.dll (0x10000000)
>>         cygsigsegv-2.dll => /usr/bin/cygsigsegv-2.dll (0xc2e40000)
>>         OLE32.dll => /Windows/syswow64/OLE32.dll (0x72540000)
>>         OLEAUT32.DLL => /Windows/syswow64/OLEAUT32.DLL (0x6fc30000)
>>         svm.dll => /usr/lib/clisp-2.48/full/svm.dll (0xc1ec0000)
>>         cygstdc++-6.dll => /usr/bin/cygstdc++-6.dll (0xc2af0000)
>>         ??? => ??? (0x1490000)
>>         IMM32.DLL => /Windows/system32/IMM32.DLL (0x7d910000)
>>         MSCTF.dll => /Windows/syswow64/MSCTF.dll (0x70990000)
>>
>>
>> That "??? => ??? (0x1490000)" line is worrisome. I fired up a
>> PROC_THREAD+LOADER ETW trace --- c:\windows\sysow64\kernel32.dll is
>> loaded at that address and unloaded again before ldd gets around to
>> calling GetModuleFileNameEx on it. Is that supposed to happen?
> 
> No idea. 0x1490000 would be too low anyway, even for kernel32.dll.
> Maybe it's just a temporary cygwin artefact.

I don't think it's a Cygwin artifact --- after all, ETW _does_ show
that we load and unload a DLL at that location. I can provide the
trace if it'd help. The mystery entry in ldd shows up for _any_
program that links against cygwin1.dll and for cygwin1.dll itself, but
not for other 32-bit programs like \windows\syswow64\notepad.exe

>> I don't think it's a DLL issue, though. clisp _does_ start and print out
>> its banner, so the OS loader has to get as far as running the program's
>> entry point. clisp seems to be crashing when loading its saved memory image.
> 
> Hmm, if you haven't changed or corrupted the image it should also not happen.
> There is some dll rebase fixup happening when loading the image, this aera
> is stable for years.
> You could try to reinstall clisp.

I've done that a few times now. I've also tried to compile the most
recent clisp release from source, and it failed similarly.

> 1. I cannot repro it and never heard of it before.

Come to think of it, I've only seen this problem since upgrading the
cygwin package. Previously, I was able to at least _start_ clisp.

> 2. ldd reports wow64, cygcheck only 32bit dlls.

That's expected. Cygcheck walks the import table, while ldd runs the
program as a debugee prints the DLLs it actually loads. When running
on a wow64 system, Windows transparently converts references to 32-bit
DLLs to their wow64 equivalents.

>     You could try ldd the base/lisp.exe not the full. full has much
> more dll deps

$ ldd /usr/lib/clisp-2.48/base/lisp.exe
        ntdll.dll => /Windows/SysWOW64/ntdll.dll (0x7de70000)
        kernel32.dll => /Windows/syswow64/kernel32.dll (0x7dd60000)
        KERNELBASE.dll => /Windows/syswow64/KERNELBASE.dll (0x7d850000)
        cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0xc5ab0000)
        cygwin1.dll => /usr/bin/cygwin1.dll (0x61000000)
        cygcrypt-0.dll => /usr/bin/cygcrypt-0.dll (0xc6400000)
        cygiconv-2.dll => /usr/bin/cygiconv-2.dll (0xc4110000)
        cygintl-8.dll => /usr/bin/cygintl-8.dll (0xc40b0000)
        cygncurses-9.dll => /usr/bin/cygncurses-9.dll (0xc39e0000)
        cygreadline7.dll => /usr/bin/cygreadline7.dll (0xc2f10000)
        cygncursesw-10.dll => /usr/bin/cygncursesw-10.dll (0xc3990000)
        USER32.dll => /Windows/syswow64/USER32.dll (0x7dc50000)
        GDI32.dll => /Windows/syswow64/GDI32.dll (0x7dab0000)
        LPK.dll => /Windows/syswow64/LPK.dll (0x7d620000)
        USP10.dll => /Windows/syswow64/USP10.dll (0x6f8e0000)
        msvcrt.dll => /Windows/syswow64/msvcrt.dll (0x6ff50000)
        ADVAPI32.dll => /Windows/syswow64/ADVAPI32.dll (0x77c60000)
        sechost.dll => /Windows/SysWOW64/sechost.dll (0x2b20000)
        RPCRT4.dll => /Windows/syswow64/RPCRT4.dll (0x7db50000)
        SspiCli.dll => /Windows/syswow64/SspiCli.dll (0x7d8a0000)
        CRYPTBASE.dll => /Windows/syswow64/CRYPTBASE.dll (0x10000000)
        cygsigsegv-2.dll => /usr/bin/cygsigsegv-2.dll (0xc2e40000)
        OLE32.dll => /Windows/syswow64/OLE32.dll (0x72540000)
        OLEAUT32.DLL => /Windows/syswow64/OLEAUT32.DLL (0x6fc30000)
        ??? => ??? (0x280000)
        IMM32.DLL => /Windows/system32/IMM32.DLL (0x7d910000)
        MSCTF.dll => /Windows/syswow64/MSCTF.dll (0x70990000)

Also,

$ clisp -k
clisp: invalid command-line option (-k), try `clisp --help'

> 3. I do not have all those .net dlls in my process. Maybe we need a
manifest?

What .NET DLLs? Do you mean the APIset stuff? That's new in Windows 7
/ 2K8R2.

Attachment: signature.asc
Description: OpenPGP digital signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]