sigsegv in compiled cygwin

jojelino jojelino@gmail.com
Sat Feb 5 18:11:00 GMT 2011


i found small piece of code that need some comment.

from trunk

       int (*wsastartup) (int, WSADATA *);

       /* Don't use autoload to load WSAStartup to eliminate recursion. */
       wsastartup = (int (*)(int, WSADATA *))
		   GetProcAddress ((HMODULE) (dll->handle), "WSAStartup");

would have meant
       typedef int __stdcall (*pfnwsastartup) (int, WSADATA *);
       pfnwsastartup wsastartup;
       wsastartup = (pfnwsastartup)
		   GetProcAddress ((HMODULE) (dll->handle), "WSAStartup");

otherwise stack frame would be damaged.

On 2011-02-05 오전 12:01, Christopher Faylor wrote:
> On Fri, Feb 04, 2011 at 09:40:46PM +0900, jojelino wrote:
>> i'm trying to build cygwin with gcc 4.6 trunk. and compile succeed.
>> but when i try to run cygwin-linked executables with new-compiled-one,
>> initialization routine failed with sigsegv  at win32_whatever+14
>>
>>   0x61171a20<+0>:     jmp    0x61171a25<win32_GetKeyboardLayout@4+5>
>>     0x61171a25<+5>:     mov    0x61171a2c,%eax
>>     0x61171a2a<+10>:    call   *(%eax)
>>     0x61171a2c<+12>:    sbb    %al,%al
>> =>  0x61171a2e<+14>:    pop    %ss
>>
>> it seems redirection statement('Kludge alert') in autoload.cc didn't
>> work as expected.
>> what would i do??
>
> Well, since you're trying to do something cutting edge and unsupported
> it seems like you will have to debug the problem using gdb and, if you
> really want this to work, make a change to autoload.cc to fix the
> problem.  Look at a call frame for normal program and find where
> the return address is stored.
>
> Either that or wait for us to move to a newer version of gcc.
>
> cgf
>



--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list