View Single Post
Old 11-03-2007, 02:43 AM  
Yil
Too much time...
 
Join Date: May 2005
Posts: 1,194
Default Changelog Part 3

Code:
52) New ioFTPD.ini option (Symbol_Path under [Location]).  This is very
    similiar to the _NT_SYMBOL_PATH environmental variable and thus useful
    when running ioFTPD as a system service.

    When writing stack backtrace information to CRASH-Log.txt it's nice to
    see correct function names instead of just addresses.  This is only
    required for the text in CRASH-Log.txt to display accurately.  If you
    submit Tiny/Minidumps for debugging they can retrieve the correct
    information regardless!

    With no help the stack trace for the original thread in ioFTPD looks like:

    ID: 3708  [00130000-0012fe94]
     # 1: 7C90EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
     # 2: 00416B50 -> [ioFTPD + 15B50]
     # 3: 00443219 -> [ioFTPD + 42219]
     # 4: 7C816FD7 -> [kernel32 + 15FD7] ? RegisterWaitForInputIdle() + 0x49

    If the ioFTPD.pdb, tcl84t.pdb, etc files are in the directory where
    ioFTPD.exe is run from then function names and line numbers can be
    displayed for those files. Resulting in:

    ID: 1212  [00130000-0012fe94]
     # 1: 7C90EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
     # 2: 00416B50 -> [ioFTPD + 15B50] ProcessMessages() + 0x40
                      [c:\projects\ioftpd6\6.3.0\src\internalmessagehandler.c, line 106]
     # 3: 0041A2E0 -> [ioFTPD + 192E0] CommonMain() + 0x30
                      [c:\projects\ioftpd6\6.3.0\src\main.c, line 250]
     # 4: 0041A723 -> [ioFTPD + 19723] WinMain() + 0x273
                      [c:\projects\ioftpd6\6.3.0\src\main.c, line 390]
     # 5: 00443219 -> [ioFTPD + 42219] __tmainCRTStartup() + 0x177
                      [f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c, line 324]
     # 6: 7C816FD7 -> [kernel32 + 15FD7] ? RegisterWaitForInputIdle() + 0x49

     The ? indicates dll's that do not have loaded debugging info and thus the
     name printed is the first previous exported symbol found which is often
     correct for the entry point into a library but usually wrong after that.

     With system symbol searching enabled the same stack looks like:
     ID: 364   [00130000-0012fe94]
      # 1: 7C90EB94 -> [ntdll + DB94] _KiFastSystemCallRet@0() + 0x0
      # 2: 7E4191BE -> [USER32 + 81BE] _NtUserGetMessage@16() + 0xC
      # 3: 00416B50 -> [ioFTPD + 15B50] ProcessMessages() + 0x40
                       [c:\projects\ioftpd6\6.3.0\src\internalmessagehandler.c, line 106]
      # 4: 0041A2E0 -> [ioFTPD + 192E0] CommonMain() + 0x30
                       [c:\projects\ioftpd6\6.3.0\src\main.c, line 250]
      # 5: 0041A723 -> [ioFTPD + 19723] WinMain() + 0x273
                       [c:\projects\ioftpd6\6.3.0\src\main.c, line 390]
      # 6: 00443219 -> [ioFTPD + 42219] __tmainCRTStartup() + 0x177
                       [f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c, line 324]
      # 7: 7C816FD7 -> [kernel32 + 15FD7] _BaseProcessStart@4() + 0x23

    Notice that even the number of stack frames is incorrect without access
    to the .pdb file for optimized code.

    See the .ini file for how to setup a local symbol cache, enable access
    to MS's downloadable symbol store temporarily so you can download the
    appropriate symbol files once, and then set it to only use the local
    files from then on.

53) New site command (site LoadSymbols).  Very similar to "site CrashNow"
    except it will force the resolving of all modules, not just those
    currently referenced on the stack, and display additional information
    such as the path to the located PDB for each module used for resolving
    in the generated CRASH-log.txt file.  Limited to master (M) accounts only.

54) Register the Allocate, ReAllocate, and Free procedures to the module
    system.  Should fix problems with user modules.  Not sure if it will
    work if _DEBUG_MEM is enabled when compiling ioFTPD (it's not by default).

55) ioFTPD-Start now defaults to a 10 (was 5) second delay before starting
    ioGUI, and also takes an optional command line argument which is the
    number of seconds to delay.


*** Internal changes

56) Moved version information lookup from the executable's resources from the
    site ioversion command to the main startup function to support printing
    version information in crash logs and eliminate redundant lookups.

57) Changed the logfile write of denied connections for auto-banned IP
    addresses to be done outside of the critical section lock.

58) Fixed a bug during initialization which resulted in a call to closesocket
    with an invalid socket handle.

59) Fixed a bug in the shared memory allocator of debug builds that could
    result in an incorrect share count which could eventually lead to
    improperly freed memory.

60) Removed old #ifdefs and defines for Registered versions only code.

61) About 100 other little things I forgot to write down...
Yil is offline   Reply With Quote