This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: BLODA detection code in latest snapshot

On 29/02/2012 10:01 AM, Corinna Vinschen wrote:
On Feb 29 09:51, Ryan Johnson wrote:
On 27/02/2012 7:26 AM, Corinna Vinschen wrote:
Hi folks,

I've just uploaded a new snapshot "2012-02-27 12:04:23 UTC". It contains two code snippets which are supposed to help diagnosing BLODA problems.

If you set the environment variable CYGWIN to "detect_bloda" and then
start a Cygwin process (bash or so), then Cygwin will detect two types
of anomalies:
Would it be a good idea to update the FAQ's bloda entry with this
info? Sure, it's probably going to give occasional false positives
and/or negatives, but it would definitely catch the obvious cases
and give a quick test for claims of bloda-free systems. You'd almost
want a new cygcheck -b option that could fork off a process or two
with detect_bloda active and capture any output that results.
Of course I will document this at one point.  So far I just didn't.
I doubt that the cygcheck -b would be useful, though.  Just call

$ export CYGWIN=detect_bloda some_executable

and you get what you want.
Sure. That's what I'd do also, but we're both familiar with the bloda. I was thinking more of users sending problem reports. Telling them to attach the output of `cygcheck -svrb' would give us useful information even if they don't (yet) know what the bloda is let alone whether they're affected by it. Sort of like how we could ask users having strange problems to check for a second cygwin1.dll in their path... but it's easier to just ask for cygcheck output and check that. As a bonus, it would catch times where someone (*cough* me *cough*) thinks they're bloda free and so doesn't check for it before reporting a problem.

Heck, if we really wanted to go whole-hog, we could add an option to check for dlls in $PATH that have base collisions. Once cygcheck supported both those checks, the fork failure error message could even tell users to run cygcheck before reporting a problem.

Actually, now that I think about it, we could just make cygwin list any base collisions among dlls used by a failed forkee and point to the FAQ entry on rebaseall. The info is at our fingertips (dll::preferred_base) and in the absence of base collisions we could spawn a process to check for bloda, whose output (if non-empty) is highly likely to be relevant. The latency of a single spawn is nothing compared to ten failed fork attempts, so it wouldn't make cygwin any slower. Between those two checks, an intelligent user could deal with the vast majority of fork failures without ever invoking the mailing list. No change to cygcheck needed at that point.

Of course, SHTDI and I won't be able to until the semester ends, but it should be just a few hours' work.


Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]