delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/03/29/19:07:04

X-Spam-Check-By: sourceware.org
Date: Wed, 29 Mar 2006 19:06:56 -0500
From: Christopher Faylor <cgf-no-personal-reply-please AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: dlopen() bug (new testcase)
Message-ID: <20060330000656.GE12890@trixie.casa.cgf.cx>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
References: <469738104 AT web DOT de>
Mime-Version: 1.0
In-Reply-To: <469738104@web.de>
User-Agent: Mutt/1.5.11
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id k2U072g0024148

On Thu, Mar 30, 2006 at 01:35:54AM +0200, Bernhard Loos wrote:
>> -----Urspr?ngliche Nachricht-----
>> Von: Christopher Faylor
>> Gesendet: Wed, 29 Mar 2006 18:15:34 -0500 
>>On Thu, Mar 30, 2006 at 01:10:56AM +0200, Bernhard Loos wrote:
>>>I looked at the problem again this week, but unfortunately I'm unable
>>>to debug anything happening after the first SIGSEGV.  I inserted a view
>>>OutputDebugString()-calls and got those results:
>>>
>>>00:00:00.703: LoadLibraryA("H:\cygwin\test\CrashTest\CrashTest.dll") called from "CYGWIN1.DLL" at address 0x6100FE42 by thread 1.
>>>00:00:00.718: Loaded "CRASHTEST.DLL" at address 0x003F0000 by thread 1.  Successfully hooked module.
>>>00:00:00.718: DllMain(0x003F0000, DLL_PROCESS_ATTACH, 0x00000000) in "CRASHTEST.DLL" called by thread 1.
>>>00:00:00.718: myfault::faulted
>>>00:00:00.718: setup_fault
>>>00:00:00.718: First chance exception 0xC0000005 (Access Violation) occurred in "CYGWIN1.DLL" at address 0x610B2DE2 by thread 1.
>>>00:00:00.718: Unloaded "CRASHTEST.DLL" at address 0x003F0000 by thread 1.
>>>00:00:00.718: LoadLibraryA("H:\cygwin\test\CrashTest\CrashTest.dll") returned NULL by thread 1. Error: Unzulssiger Zugriff auf einen Speicherbereich (998).
>>>00:00:00.781: First chance exception 0xC0000005 (Access Violation) occurred at address 0x003F101A by thread 1.
>>>00:00:00.781: return_from_fault
>>>00:00:00.781: First chance exception 0xC0000005 (Access Violation) occurred at address 0x40000060 by thread 1.
>>>00:00:00.781: First chance exception 0xC0000029 (Unknown) occurred in "NTDLL.DLL" at address 0x7C95EB28 by thread 1.
>>>
>>>It looks, like Windows unloads the DLL after the first exception even before the myfault-exception handler is able to catch it.
>>>So return_from_fault() tries to longjmp to code wich isn't present any more an the second exception occurs.
>>>
>>>To fix this problem, I would suggest to use the IsBadReadPtr()-function instead of the myfault-exception handler to check the pointer in 
>>>verifyable_object_isvalid().
>>>I could write a patch, if nobody has any objections.
>>
>>Sorry, no.  We *just* got rid of IsBadReadPtr's.
>
>Just out of interest, what's the problem with IsBadReadPtr?

You'll have to read the archives.  Eric Blake has talked about this very
recently.

>>FWIW, I doubt that Windows is really ignoring an exception handler.
>
>The exception handler is called, but at least the return_from_fault is
>called after the DLL gets unloaded, as you can see above.

I don't see that in your output.  However, If that was the case, you
should be able to set a breakpoint in the exception handler to verify
it without resorting to contortions like adding OutputDebugString.

cgf

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


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019