|
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.