in reply to Re: Perl58.dll & nt.dll crashes
in thread Perl58.dll & nt.dll crashes

It is a code of 35000 lines... I was hoping that someone would be familiar with DrWatson errors. From what I read it refers to a sleep function error but not sure if I am reading it correctly.

Replies are listed 'Best First'.
Re^3: Perl58.dll & nt.dll crashes
by BrowserUk (Patriarch) on Mar 10, 2010 at 11:40 UTC
    it refers to a sleep function error

    It does suggest that, but it is almost certainly wrong. The Win API sleep() is just about the simplest piece of code in the OS, and very well exercised. It takes one argument, a DWORD, which is treated as an unsigned 32-bit quantity of milliseconds. Even if it was passed a float or double or a memory address, it still wouldn't trap. It would just interpret the numeric value as a long sleep.

    What I'm saying is, it is really hard to see how a call to sleep could ever lead to a trap. The first line of what you've posted says: "WARNING: Stack unwind information not available. Following frames may be wrong." And it almost certainly is.

    The problem with Dr.Watson dumps, is that they try to produce a stack trace by "decompiling" the stack using limited (or no) symbolic debugger information.

    1. Perl doesn't use a conventional stack for a lot of its internal operations.
    2. The code it is trying to reverse engineer has been optimised, which makes it close to impossible to do properly.
    3. The core of the perl run loop doesn't follow 'normal' executable coding patterns.

    The net result is that the stack dumps produced are always confused and essentially useless. If you compile the Perl with optimisations disabled and full symbolic debug support enabled, you can sometimes follow it through, but even then not always.

    It is usually far easier to to track down the source of such traps at the Perl source level than at the binary level. If you need tips on how to do that, then try posting a high level overview of the structure of your code.


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

        I looked. And I saw that you don't understand taint.

        I also saw that your js unconditionally adds your website to your visitors favorites. Which for me puts you right up there with spammers, scammers and other unsavory types, so you're on your own.

Re^3: Perl58.dll & nt.dll crashes
by ZlR (Chaplain) on Mar 10, 2010 at 11:40 UTC
    I believe there is a memory overlap at 8da42400000000 due to kernel32!Sleep+0xf raising a kernel exception while calling mov 7c90e4ff 8b0424 .

    You should modifiy HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4567D45F334-E45647-B1337}\001\KernelSleepStackId from 0x000001 to 0x00000A


    [ ok, sorry, i already left the room /o/

Re^3: Perl58.dll & nt.dll crashes
by SuicideJunkie (Vicar) on Mar 10, 2010 at 16:07 UTC

    You must have missed the "reduced to the minimum" part.

    If you trim and stub out chunks of your code, you will eventually have a very small set of code that replicates the issue, and the problem will usually become obvious.
    Most other times, you will realize what the problem is while you are still finding what can be trimmed or not, and can then you can fix the problem directly.
    In the rare cases where none of the above apply, you've still got a small chunk of code that you can ask for and actually receive useful help with.

Re^3: Perl58.dll & nt.dll crashes
by sierpinski (Chaplain) on Mar 11, 2010 at 17:38 UTC
    If you have no idea where in your code this error is being thrown, you can throw in some simple debug messages (not being able to see the code I have no idea how it's laid out)... if you put one every 1000 lines, you should easily be able to tell what chunk of code is causing the error, then narrow that down to 500, 200, 100, 50, etc. Then you'd have something you could post. Asking for help with code that you don't show is pointless.

    In my opinion, simple print("debug 1"); print("debug 2"); etc. messages are highly underrated. When your script pukes, you can easily tell where, if it doesn't give you a meaningful error message.

    /\ Sierpinski