@Yil
Found out a bug, if let say a user edited "Active_Services" under [Network] on ioFTPD.ini to other name other than FTP_Services and forgot to rename service name on above line "# FTP SETUP #", ioFTPD will crash with a crash dump. As it will failed to recognize proper "Active_Services" in which in this case the user forgot to rename it as the same as in the Active_Services.
I think ioFTPD should log and handle with like "Cannot found "ServiceName" Active_Services", and gracefully exit the process.
Another bug, ioFTPD will crashes without a crash dump when executing "Site Drives" command from nxtools 1.2.1. Looks like it's a buffer overrun :
Code:
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
*** WARNING: Unable to verify checksum for C:\ioFTPD\system\tcl85tg.dll
*** WARNING: Unable to verify checksum for C:\ioFTPD\lib\nxHelper\nxHelper.dll
*** WARNING: Unable to verify checksum for C:\ioFTPD\system\ioFTPD.exe
FAULTING_IP:
ucrtbased!issue_debug_notification+30 [d:\th\minkernel\crts\ucrt\src\appcrt\internal\report_runtime_error.cpp @ 125]
0fe08500 cc int 3
EXCEPTION_RECORD: (.exr -1)
ExceptionAddress: 0fe08500 (ucrtbased!issue_debug_notification+0x00000030)
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 1
Parameter[0]: 00000000
FAULTING_THREAD: 000026ec
DEFAULT_BUCKET_ID: STATUS_BREAKPOINT
PROCESS_NAME: ioFTPD.exe
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.
EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid
EXCEPTION_PARAMETER1: 00000000
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
APP: ioftpd.exe
ANALYSIS_VERSION: 10.0.10240.9 x86fre
BUGCHECK_STR: STATUS_BREAKPOINT
LAST_CONTROL_TRANSFER: from 0fe086a1 to 0fe08500
STACK_TEXT:
02efb8ec 0fe086a1 0fd82fe4 50c6d6b8 00000000 ucrtbased!issue_debug_notification+0x30
02efb904 0fe22b8a 0fd82fe4 896eb4a8 02efb940 ucrtbased!__acrt_report_runtime_error+0x11
02efb914 50bede0e 02efbcdc ffffffff 77cf8b24 ucrtbased!abort+0x1a
02efb940 50bedc0e 50c7035c 02efb980 02efb960 tcl85tg!Tcl_PanicVA+0x1ce
02efb954 50c057d3 50c7035c 50c70348 02efbcdc tcl85tg!Tcl_Panic+0x1e
02efb96c 77c506db 04463510 77cf8b24 ffffffff tcl85tg!Tcl_SetStringObj+0x23
02efbcc4 50b36930 00000000 026ea478 00000004 nxHelper!VolumeObjCmd+0x28b
02efbd78 50b9641e 026ea478 00000004 043dae20 tcl85tg!TclEvalObjvInternal+0x350
02efd358 50bfdc05 026ea478 04ae86c8 02efd3bc tcl85tg!TclExecuteByteCode+0x20ee
02efd388 50bfd53d 026ea478 04462f28 00000001 tcl85tg!TclObjInterpProcCore+0xb5
02efd3a4 50b36930 04b08a40 026ea478 00000001 tcl85tg!TclObjInterpProc+0x4d
02efd458 50b9641e 026ea478 00000001 043dad64 tcl85tg!TclEvalObjvInternal+0x350
02efea38 50bfdc05 026ea478 04b3a050 02efea9c tcl85tg!TclExecuteByteCode+0x20ee
02efea68 50bfd53d 026ea478 04463060 00000001 tcl85tg!TclObjInterpProcCore+0xb5
02efea84 50b36930 027d2e30 026ea478 00000002 tcl85tg!TclObjInterpProc+0x4d
02efeb38 50b34f90 026ea478 00000002 043dab58 tcl85tg!TclEvalObjvInternal+0x350
02efec6c 50b335a0 026ea478 04b2a3e0 000084c9 tcl85tg!TclEvalEx+0x9f0
02efec90 50bd0570 026ea478 04b2a3e0 000084c9 tcl85tg!Tcl_EvalEx+0x20
02efed38 50bcfc52 026ea478 044627f0 00000000 tcl85tg!Tcl_FSEvalFileEx+0x2f0
02efed4c 50bcde02 026ea478 044627f0 cccccccc tcl85tg!Tcl_FSEvalFile+0x12
02efed6c 00484e13 026ea478 027ee144 02eff17c tcl85tg!Tcl_EvalFile+0x42
02eff0bc 004842f4 02eff154 02eff138 00000000 ioFTPD!TclExecute2+0xb13
02eff0d4 0041b48c 02eff154 02eff138 02effe64 ioFTPD!TclExecute+0x14
02eff17c 00426d41 02effe40 02efff4c 02effe88 ioFTPD!RunEvent+0x34c
02effe64 00426972 044cf570 02efff34 00000000 ioFTPD!FTP_AdminCommands2+0x3c1
02effe78 00421e3c 044cf570 02efff34 02efff54 ioFTPD!FTP_AdminCommands+0x12
02efff4c 00489eb5 044cf570 00489a00 00489a00 ioFTPD!FTP_Command+0x66c
02efff80 748a3744 025de878 748a3720 7f92f328 ioFTPD!WorkerThread+0x4b5
02efff94 7776a064 025de878 9f964bee 00000000 KERNEL32!BaseThreadInitThunk+0x24
02efffdc 7776a02f ffffffff 7778d7ee 00000000 ntdll!__RtlUserThreadStart+0x2f
02efffec 00000000 00489a00 025de878 00000000 ntdll!_RtlUserThreadStart+0x1b
FOLLOWUP_IP:
ucrtbased!issue_debug_notification+30 [d:\th\minkernel\crts\ucrt\src\appcrt\internal\report_runtime_error.cpp @ 125]
0fe08500 cc int 3
FAULTING_SOURCE_LINE: d:\th\minkernel\crts\ucrt\src\appcrt\internal\report_runtime_error.cpp
FAULTING_SOURCE_FILE: d:\th\minkernel\crts\ucrt\src\appcrt\internal\report_runtime_error.cpp
FAULTING_SOURCE_LINE_NUMBER: 125
SYMBOL_STACK_INDEX: 0
SYMBOL_NAME: ucrtbased!issue_debug_notification+30
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: ucrtbased
IMAGE_NAME: ucrtbased.dll
DEBUG_FLR_IMAGE_TIMESTAMP: 559f3a99
STACK_COMMAND: ~7s ; kb
BUCKET_ID: STATUS_BREAKPOINT_ucrtbased!issue_debug_notification+30
PRIMARY_PROBLEM_CLASS: STATUS_BREAKPOINT_ucrtbased!issue_debug_notification+30
FAILURE_PROBLEM_CLASS: STATUS_BREAKPOINT
FAILURE_EXCEPTION_CODE: 80000003
FAILURE_IMAGE_NAME: ucrtbased.dll
FAILURE_FUNCTION_NAME: issue_debug_notification
FAILURE_SYMBOL_NAME: ucrtbased.dll!issue_debug_notification
FAILURE_BUCKET_ID: STATUS_BREAKPOINT_80000003_ucrtbased.dll!issue_debug_notification
ANALYSIS_SOURCE: UM
FAILURE_ID_HASH_STRING: um:status_breakpoint_80000003_ucrtbased.dll!issue_debug_notification
FAILURE_ID_HASH: {873e5c52-b2c0-29e3-e2ff-a9970cd592ad}
Followup: MachineOwner
---------
From the looks of it it seems either tcl or nxhelper module has been crashed?, i have searched about hot-loading dll module in c/c++ and found out about project
Aurora :
Code:
Runtime-Compiled C++ is a way to reliably make major changes to your C++ code at runtime and see the results immediately.
So whenever a module/code crashed, it won't crash the whole program, mostly noticeable in game application and telecommunication industry, when user can hot swapping features without restarting the apps. Or for example in other language such as erlang.
Is there any plan to implement project aurora to ioFTPD?.
I am dreaming of ioFTPD for being run for couple of years without crashes, where tcl/modules crashes will be notified and reloading its modules after crash.