Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sat, 17 Dec 2011 00:27:51 +0400
From: Solar Designer <solar@...nwall.com>
To: john-dev@...ts.openwall.com
Subject: Re: 1.7.9's --external + OpenMP fails on Cygwin

On Sat, Nov 26, 2011 at 11:45:43PM +0400, Solar Designer wrote:
> I debugged the problem in OllyDbg a little bit.  (It's my first time
> using this debugger, by the way.)  On a dual-core, there are three
> threads - two are running, one is mostly waiting.  When the problem is
> triggered - which happens just a few seconds after program start - only
> one running thread remains, and it is looping in cyggomp-1's calls to
> cygwin1.dll's sem_wait().  Specifically, per gcc/libgomp sources, it
> appears to assume that if sem_wait() returns an error, that error must
> be EINTR because of a signal, so it simply repeats the call.  In my
> case, the error is instead EINVAL (yes, I did locate and check errno).

With my current 1.7.9-jumbo-5 tree, the problem is triggered even in a
--test run.  However, it is not triggered when I run under a debugger,
but rather I see it when I attach a debugger to a process that is
already looping on failing sem_wait().

Also, sem_wait() is called on lots of invalid stuff (ASCII strings and
such) at various times, which surprisingly appears to be harmless - I
let OllyDbg deliver the exception (on bad pointer read) to the program
and it just continues running fine (tests pass, etc.)

There's something really wrong going on, but I am not sure if it's in
John, in libgomp, or in Cygwin libs.

Alexander

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.