This is the mail archive of the
cygwin-apps
mailing list for the Cygwin project.
RE: [PATCH] setup.exe SEGV on WinXP/Pro
- From: "Thrall, Bryan" <bryan dot thrall at flightsafety dot com>
- To: <cygwin-apps at cygwin dot com>
- Cc: "Thrall, Bryan" <bryan dot thrall at flightsafety dot com>
- Date: Fri, 9 Aug 2013 11:01:32 -0500
- Subject: RE: [PATCH] setup.exe SEGV on WinXP/Pro
- References: <877gfw2fqp dot fsf at Rainer dot invalid> <20130809090726 dot GS16868 at calimero dot vinschen dot de> <20130809153313 dot GA2312 at ednor dot casa dot cgf dot cx>
Christopher Faylor wrote on 2013-08-09:
> On Fri, Aug 09, 2013 at 11:07:26AM +0200, Corinna Vinschen wrote:
>> On Aug 8 20:34, Achim Gratz wrote:
>>>
>>> I've been having sporadic SEGV on WinXP/Pro just after the MD5 of a
>>> package was checked that used to clear up after a reboot. Today,
with a
>>> freshly built setup.exe this failure was now entirely reproduceable.
>>> I've fixed it by reimplementing the string formatting for the MD5
digest
>>> using C++ stream functions.
>>>
>>
>>>> From 677e2e89d1e4046c967dd1759ac53116f6643bd9 Mon Sep 17
> 00:00:00 2001
>>> From: Achim Gratz <Stromeko@Stromeko.DE>
>>> Date: Thu, 8 Aug 2013 20:23:31 +0200
>>> Subject: [PATCH] fix SEGV on WinXP/Pro
>>>
>>> * csu_util/MD5Sum.cc (MD5Sum::operator std::string() const):
>>> Reimplement using stringstream to avoid a SEGV on WinXP/Pro.
>>
>> Patch applied.
>>
>>> - return std::string(hexdigest);
>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> I'm wondering if that was the problem. This expression constructs a
>> std:string and then immediately destructs it since the scope is
limited
>> to the end of the function (which the return statement is all about).
>> Reading the value of this object in the parent function is basically
>> luck, isn't it?
>
> Sheesh. Yes, that looks like the problem. But doesn't the new code
do
> pretty much the same thing?
>
> + std::ostringstream hexdigest;
> + return hexdigest.str();
According to this:
http://stackoverflow.com/questions/275214/scope-and-return-values-in-c
Returning the object should be ok because it is copied before leaving
the function scope; returning a reference or pointer to the object is
where you get into problems.
--
Bryan Thrall
Principal Software Engineer
FlightSafety International * Visual Simulation Systems * 5695 Campus
Parkway * Hazelwood, MO 63042
Tel: (314) 551-8413 * Fax: (314) 551-8444
bryan.thrall@flightsafety.com * www.flightsafety.com * A Berkshire
Hathaway company