StackWalker moved to CodePlex

If you have ever published an article on CodeProject, you will see that maintanance an ariticle is practicale impossible. In the last several years, I improved the source-code of my “StackWalker” article outside of codeproject, but this also leads to confusion…

So today I moved at least the source code to codeplex:
http://stackwalker.codeplex.com/

10 thoughts on “StackWalker moved to CodePlex

  1. frank28_nfls

    very nice! I personally discovered your software about 1 year ago, and was using it in my several projects, and found that it really helps! But I always wondering why you didn’t use any VCS to manage the source code and release. Now finally, lol

    btw, is there any update in Codeplex since RC9?

    thanks again for your work, anyway~

  2. Alexander

    Hello, I need you help

    I use this code to process exception
    I found some times the result of StackWalker doesn’t like vs2005’s result?

    nRetCode = StackWalk64(
    IMAGE_FILE_MACHINE_I386,
    m_hProcess,
    m_hThread,
    &m_Stackframe,
    &m_Context,
    ReadProcessMemory,
    SymFunctionTableAccess64,
    SymGetModuleBase64,
    NULL
    );

    how to explain it?
    Wish you EMail

  3. Deepak

    Hi Jochen,

    I am using your tool LeakFinder from codeproject on Win32 and Win64.
    It is working perefectly fine when run on Win32 and I am getting following output (as expected) :

    ######## CRT-Leaks ########
    ————— Key: 63, 32 bytes ———
    d:\tempproj\leakfinder-rc5\main.cpp (44): main
    f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c (327): __tmainCRTStartup
    f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c (196): mainCRTStartup
    7C817067 (kernel32): (filename not available): RegisterWaitForInputIdle
    ————— Key: 64, 10 bytes ———
    d:\tempproj\leakfinder-rc5\main.cpp (18): Func5
    d:\tempproj\leakfinder-rc5\main.cpp (23): Func4
    d:\tempproj\leakfinder-rc5\main.cpp (27): Func3
    d:\tempproj\leakfinder-rc5\main.cpp (31): Func2
    d:\tempproj\leakfinder-rc5\main.cpp (35): Func1
    d:\tempproj\leakfinder-rc5\main.cpp (47): main
    f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c (327): __tmainCRTStartup
    f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c (196): mainCRTStartup
    7C817067 (kernel32): (filename not available): RegisterWaitForInputIdle
    ######## COM-Leaks ########
    ————— Key: 00178CA8, 999 bytes ———
    775833D5 (ole32): (filename not available): CoRevokeMallocSpy
    774FD073 (ole32): (filename not available): CoTaskMemAlloc
    d:\tempproj\leakfinder-rc5\main.cpp (39): DoCoMalloc
    d:\tempproj\leakfinder-rc5\main.cpp (46): main
    f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c (327): __tmainCRTStartup
    f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c (196): mainCRTStartup
    7C817067 (kernel32): (filename not available): RegisterWaitForInputIdle
    ‘LeakFinder_VC5.exe’: Unloaded ‘C:\WINDOWS\system32\dbghelp.dll’
    The program ‘[5256] LeakFinder_VC5.exe: Native’ has exited with code 0 (0x0).

    However, when run on Win64 output is as under :

    ######## CRT-Leaks ########
    ————— Key: 65, 48 bytes ———
    ————— Key: 66, 10 bytes ———
    ######## COM-Leaks ########
    ————— Key: 000000000024A600, 999 bytes ———
    f:\sp\vctools\crt_bld\self_64_amd64\crt\src\mlock.c (349): _lock
    0000000140082670 (LeakFinder_VC5): (filename not available): `dynamic atexit destructor for ‘zzz_LeakFinder”
    f:\sp\vctools\crt_bld\self_64_amd64\crt\src\crt0dat.c (553): doexit
    f:\sp\vctools\crt_bld\self_64_amd64\crt\src\crt0dat.c (399): exit
    f:\sp\vctools\crt_bld\self_64_amd64\crt\src\crt0.c (333): __tmainCRTStartup
    f:\sp\vctools\crt_bld\self_64_amd64\crt\src\crt0.c (196): mainCRTStartup
    000000007735F56D (kernel32): (filename not available): BaseThreadInitThunk
    0000000077593281 (ntdll): (filename not available): RtlUserThreadStart
    ‘LeakFinder_VC5.exe’: Unloaded ‘C:\Windows\System32\dbghelp.dll’
    The thread ‘Win64 Thread’ (0x964) has exited with code 0 (0x0).
    The program ‘[3400] LeakFinder_VC5.exe: Native’ has exited with code 0 (0x0).
    exited with code 0 (0x0).

    On debugging on Win64 I found out that ShowCallstack() in StackWalker.cpp wouldn’t get enogh frames. I am not able to figure out what could be the reason.
    Could you please provide some clue and let me know if you any further information from me. Also, if you could tell why Rbp in context on Win64 is coming out as 0.

    Thanks in advance,
    Deepak.

  4. Pimsock

    Hi,

    Thanks for making Leak Finder available. I am building a little DLL wrapper around it so that I can (hopefully) use it in a VB6-based project. I found that I had to make a couple small changes to the source code to get it to compile (under VC++ 6), and I thought I should let you know about them:

    In StackWalker.h, #if _MSC_VER < 1400, you do this:

    #define strcpy_s strcpy
    #define strncpy_s strncpy

    To get it to compile, I had to change it to this:

    #define strcpy_s(a, b, c) strcpy(a, c)
    #define strncpy_s(a, b, c, d) strncpy(a, c, d)

    I hope this helps. If I’m misunderstanding something, please let me know. In any case, once again, thanks for making this.

  5. jkalmbach Post author

    Just take a look at the main-trunk in the Source!!! It is already solved 😉 I need to make a new release…

  6. Richard

    Just downloaded StackWalker and tried building on Visual Studio 6.
    I appreciate that you still provide project files to build it on such an old compiler, but there is a fault.
    For _MSC_VER < 1400 you provide local #defines for some of the _s functions. VC6 (_MSC_VER = 1200) uses these. However, you then call strcpy_s with three parameters and strncpy_s with four. strcpy only takes two and strncpy only takes three, so the #defines actually need to be :
    #define strcpy_s( a, b, c ) strcpy( a, c )
    #define strncpy_s( a, b, c, d ) strncpy( a, c, b )

    Regards,
    Richard.

  7. jkalmbach Post author

    You should just downlod the source-code directly from the VCS… this is fixed since 5 months…. I need to make a new download…

Comments are closed.