Hi, I have no Win2K to check the issue, but I checked that dbghelp works
fine on WinXP and  Windows Server 2003.
I see trivial solution here, we can simply disable dbghelp usage for systems
older than WinXp. It could be done by _WIN32_WINNT macros:
_WIN32_WINNT>=0x0501 means WinXP and Windows Server 2003 server only.
I also want to note that callstack print is caused by some crash in VM
handled with crash_handler.
Proposed fix:

Index: nt_exception_filter.cpp

===================================================================

--- nt_exception_filter.cpp     (revision 427015)

+++ nt_exception_filter.cpp     (working copy)

@@ -29,9 +29,11 @@

// Windows specific

#include <string>

#include <excpt.h>

+#if _WIN32_WINNT >= 0x0501

#include <dbghelp.h>

#include <windows.h>

#pragma comment(linker, "/defaultlib:dbghelp.lib")

+#endif



static inline void nt_to_vm_context(PCONTEXT context, Registers* regs)

{

@@ -86,6 +88,7 @@

}



// CallStack print

+#if _WIN32_WINNT >= 0x0501

#define CALLSTACK_DEPTH_LIMIT 100 // max stack length is 100 to prevent
getting into loop



static void print_callstack(LPEXCEPTION_POINTERS nt_exception)

@@ -148,6 +151,10 @@



    fflush(stderr);

}

+#define PRINT_CALLSTACK(Exc) print_callstack(Exc)

+#else

+#define PRINT_CALLSTACK(Exc)

+#endif



/*

 * Information about stack

@@ -367,7 +374,7 @@



        if (!vm_get_boolean_property_value_with_default("vm.assert_dialog"))
{

            print_state(nt_exception, msg);

-            print_callstack(nt_exception);

+            PRINT_CALLSTACK(nt_exception);

            LOGGER_EXIT(-1);



        }

Best regards,
Aleksey.

On 8/2/06, Geir Magnusson Jr <[EMAIL PROTECTED]> wrote:



Paulex Yang wrote:
> Geir Magnusson Jr wrote:
>> Paulex Yang wrote:
>>
>>> Finally I found a stable win2k installation(still server edition with
>>> SP4) , and installed Windows Platform SDK, but same error happens,
then
>>> I restarted it, but nothing changed:(, my Platform SDK was downloaded
at
>>> end of 2005, did I make any mistakes? Do I have to recompile DRLVM on
>>> win2k?
>>>
>>>
>>
>> I think we need to find out whatever is requiring dbghelp and fix that.

>>  I'm really hoping we don't need a separate snapshot for Win2k
>>
>> geir
>>
> +1 from me, from Aleksey's comments below, can I safely assume it is
> done only by updating the nt_exception_filter.cpp? I did a search in
> DRLVM trunk, this is the only file referring to dbghelp.h.
>>

Ooh.  Missed that.  Ok, so the problem is clear.  How do we want to
handle this?

I think it's important that on crashes, we get this info...

geir


>>> Aleksey Ignatenko wrote:
>>>
>>>> Hi, it looks like your friend needs to install Microsoft Platform SDK
>>>> on his
>>>> PC .
>>>> Another solution is to download and update version of dbghelp library
>>>> from
>>>> msdn site.
>>>> I didn't check the second solution.
>>>> If you don't not succeed for some reason, simply modify
>>>> nt_exception_filter.cpp file excluding lines:
>>>> #include <dbghelp.h>,
>>>> #pragma comment(linker, "/defaultlib:dbghelp.lib"),
>>>> print_callstack function. It will disable call stack printing when
>>>> crash
>>>> happens.
>>>>
>>>> Aleksey.
>>>>
>>>>
>>>>
>>
>>
>
>

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to