CrashRpt Changelog

What's new in CrashRpt 1.3.0

Feb 2, 2012
  • Added support of CMake - cross-plaform make system. Although CrashRpt doesn't support operating systems other than Windows, CMake makes it easier to maintain build configurations for different versions of Visual Studio. Project files for VC++ .NET 2003, 2005, 2008, 2010 and VC++ Express can be generated
  • Added instructions to the documentation on how to generate Visual Studio project files with CMake
  • Removed project files for Visual Studio 2003 (CrashRpt_v2003.sln) and Visual Studio 2005 (CrashRpt_v2005.sln). To compile in VS2010, use Visual Studio 2010 project files (or use CMake to generate Visual Studio project files for your favorite version of Visual Studio)
  • Binary files now have version suffices (CrashRpt1300.dll, CrashRptProbe1300.dll and CrashSender1300.exe). This is to resolve problems of loading incorrect version of the DLL
  • Removed obsolete API InstallW, InstallA, Uninstall, AddFileW, AddFileA, GenerateErrorReport
  • Added an ability to select/deselect/delete all error reports and delete selected reports in ResendDlg ( issue 112 )
  • Updated Italian lang file ( issue 92 )
  • Updated German lang file ( issue 98 )
  • Updated French lang file ( issue 107 )
  • Fixed: CrashSender fails to initialize if two files both have empty destination properties ( issue 88 )
  • Fixed: DestroyView fails in SharedMem implementation ( issue 93 )
  • Fixed: CHttpRequestSender::InternalSend() sends bad request header ( issue 95 )
  • Fixed: Potential buffer overflow in CHttpRequestSender::InternalSend() ( issue 96 )
  • Fixed: Formatting / coding request ( issue 97 )
  • Fixed: Typo in string conversion class ( issue 99 )
  • Fixed: Compilation fails if build directory contains spaces ( issue 100 )
  • Fixed: The space confuses some mail servers, the RFC for QUIT defines that there should be no space. ( issue 105 )
  • Fixed: RFC correct base64 for SMTP send ( issue 106 )
  • Fixed: Wrong handling of dwFlags when setting handlers ( issue 109 )
  • Fixed: SMTP fails if Date header missing ( issue 110 )

New in CrashRpt 1.2.10 r1203 (Jun 9, 2011)

  • Added new language files: German, Spanish, French, Hindi, Italian, Korean, Portuguese and Chinese Simplified. Some of these files were produced by professional translators (Korean, Chinese Simplified), but others are generated with help of an automated translation tool, so do not hesitate to report mistakes.
  • Refactored unit tests, so now they support fixtures and execute faster then before.
  • Added new test suites LangFileTests and CrproberTests.
  • Fixed: Typo in HttpRequestSender.cpp
  • Fixed: Typos in test project
  • Fixed: Replace relative paths with OutDir and IntDir
  • Fixed: MD5 files are not removed
  • Fixed: CrashSender cannot properly send old reports (with smtp)
  • Fixed: CrashSender manifest file prevents CrashSender from launching in x64

New in CrashRpt 1.2.9 (Jun 9, 2011)

  • Compiler/linker output for x64 platform is now directed to bin\x64, while output dir for Win32 platform is the same (bin) ( issue 77 ).
  • Improved documentation (extended "Using CrashRpt API" and "An Example of Using API", "Writing Robust Code" sections)
  • Annotated code with SAL macros and fixed some PREfast warnings (this should fix some potential stability and security issues).
  • Fixed: Clarification for CR_INST_DONT_SEND_REPORT & CR_AF_TAKE_ORIGINAL_FILE
  • Fixed: SVN/package file encoding strangeness ( issue 76 )
  • Fixed: If I pass the short name for the path to crash report, it failed to create the directory ( issue 78 )

New in CrashRpt 1.2.8 (Jun 9, 2011)

  • Added JPEG library code from Independent Jpeg Group.
  • Improved desktop screenshot capture: added an ability to save screenshots as JPEG files, an ability to define JPEG image quaility, an ability to save grayscale screenshots.
  • New function crAddScreenshot2() allows to define JPEG quality.
  • Implemented Jpeg image preview in Error Report Details dialog.
  • New section ScreenshotInfo in crash description XML file
  • Modified compiler options in all projects to favor small size (Release configuration). This should reduce the size of the binaries.
  • Completely rewritten the code responsible for communication between CrashRpt.dll and CrashSender.exe (now using shared memory instead of temporary XML files)
  • Added an ability to add a custom title icon for CrashRpt dialogs through CR_INSTALL_INFO::pszCustomSenderIcon.
  • New sections of documentation: Running automated tests and Making Your Code Robust.
  • Refactored Tests project (removed unneeded functionality). Additional test cases.
  • New test suite DeliveryTests. Tests now work even for Release LIB build configuration.
  • Improved Doxyfile, removed search index and now the documentation should take less disk space.
  • Added new table CRP_TBL_MDMP_LOAD_LOG
  • New column CRP_COL_MODULE_LOADED_IMAGE_NAME
  • MD5 file is now generated and stored in error report folder when using CR_INST_STORE_ZIP_ARCHIVES flag
  • New member hSenderProcess in CR_EXCEPTION_INFO struct
  • Fixed a mistake in basic_stats.py (now using multimap instead of map)
  • Reorganized tinyxml files (now they are compiled in a separate project)
  • Extended lang files (new strings DescCrashDump, DescXML, DescScreenshot, DescRegKey)
  • Added HTTPS support for error report upload
  • The function crExceptionFilter() is declared deprecated.
  • fix: CR_INST_STORE_ZIP_ARCHIVES ( issue 59 )
  • fix: crAddScreenshot( CR_AS_MAIN_WINDOW); ( issue 61 )
  • fix: Cannot be loaded under Win2000 due to import of the GetGeoInfo function from kernel32.dll ( issue 65 )
  • fix: std::string CCrashHandler::XmlEncodeStr(CString sText) error ( issue 67 )
  • fix: CR_INST_STORE_ZIP_ARCHIVES and CR_AF_TAKE_ORIGINAL_FILE ( issue 69 )
  • fix: atlassert in crashhandler.cpp ( issue 70 )
  • fix: Registry keys with ampersand (&) are not dumped ( issue 71 )

New in CrashRpt 1.2.7 (Jun 9, 2011)

  • Added Tests project that implements automated tests for CrashRpt and CrashRptProbe functionality.
  • Reorganized directory structure to better reflect architecture.
  • Updated tinyxml, minizip and zlib files to the latest available versions.
  • Refactored scripts/postprocess.bat. It now better groups similar error reports.
  • New tag GeoLocation - user's geographic location like 'en-us' is now recorded inside of crash description XML.
  • New tag OSIs64Bit - detects if user's OS is 64-bit and records this inside of crash description XML.
  • Improved the way crprober.exe cleans up its temporary files.
  • New columns CRP_COL_OS_IS_64BIT and CRP_COL_GEO_LOCATION for CRP_TBL_XMLDESC_MISC table.
  • New column CRP_COL_EXCEPTION_THREAD_STACK_MD5 for CRP_TBL_MDMP_MISC table.
  • Fixed issue with Chineese symbols in app name ( issue 54 ).
  • Improved CFilePreviewCtrl to support UTF-8 and UTF-16 encoding ( issue 56 ). Also improved WM_MOUSEWHEEL message handling (scrolling preview by mouse wheel).
  • Using critical section to avoid access to CCrashHandler from several crashed threads ( issue 52 ).
  • Fixed: Leaving pszRestartCmdLine NULL, gives new application instance blank first argument ( issue 50 ).
  • Fixed incorrect argument order in crAddRegKeyA ( issue 49 ).
  • Added new flag CR_INST_STORE_ZIP_ARCHIVES that allows to store ZIP archives along with uncompressed error report files ( issue 53 ).
  • Fixed: Version info caused crash ( issue 48 ).
  • Improved documentation (section Architecture Overview).
  • Improved documentation (section Using Crash Minidump) ( issue 45 ).
  • Fixed DNS access problem for SMTP proxy ( issue 51 ).

New in CrashRpt 1.2.6 (Jun 9, 2011)

  • Added project files for Visual Studio 2010 ( issue 35 ).
  • New API function crAddRegKey allowing to add a registry key dump to the error report.
  • Using .def files to undecorate API function names.
  • Extended crEmulateCrash(), new constant CR_THROW -- tests how a thrown C++ exception is intercepted ( issue 35 ).
  • Fixed: exit(1) in different thread may cause crashes ( issue 43 ). Now using TerminateProcess() instead of exit() or ExitProcess().
  • Fixed: Error report is sent twice if crashes in a DLL ( issue 44 ). Using crash counter variable to avoid multiple crash report generation.
  • Removed 'Type' column from Error Report Details dialog.

New in CrashRpt 1.2.5 (Jun 9, 2011)

  • Introduced an ability to send error reports queued for delivery ( issue 33 ). New flag CR_INST_SEND_QUEUED_REPORTS.
  • Fixed: zipped file timestamps are incorrect ( issue 40 ).
  • Fixed: Release buffer from DnsQuery ( issue 42 ).
  • Fixed: exit(1) in different thread may cause crashes ( issue 43 ).
  • Fixed: A bug in CScreenCapture multiple monitors
  • Fixed: Issue with g_CrashInfo.m_uPriorities. Introduced CR_NEGATIVE_PRIORITY constant.
  • Refactored php example of how to receive error reports by HTTP.
  • Extended documentation.

New in CrashRpt 1.2.4 (Jun 9, 2011)

  • Introduced an ability to restart an application automatically on crash. The application is restarted only if at least 60 seconds have elapsed since its start. This is done to avoid cyclic restarts of an unstable application which crashes on start up. This is the enhancement requested in issue 11 .
  • Introduced an ability to preview graphics files (BMP, PNG) in Details dialog. This is useful if a user would like to preview the desktop screenshot image attached to the error report.
  • An ability to not include minidump file into error report. This implements the enhancement requested in issue 33 .
  • An ability to specify custom email text by using CR_INSTALL_INFO::pszEmailText member.
  • An ability to specify custom directory and file name for the language file. This will be useful for applications that need to modify UI language on the fly. This is requested in issue 34 .
  • An ability to disable particular error report sending transport by specifying a negative priority in CR_INSTALL_INFO::uPriorities array.
  • An ability to specify SMTP proxy for built-in SMTP client. This may be useful for server-side software that would need to configure SMTP transport without querying DNS MX (mail exchange) record.

New in CrashRpt 1.2.3 (Jun 9, 2011)

  • Improved file preview in DetailDlg. Now a file can be previewed in HEX or in text mode.
  • Ability to customize the port for SMTP connection.
  • Fixed: CrashSender Crash ( issue 24 )
  • Fixed: dbghelp.dll cannot be found ( issue 26 )
  • Fixed: Certain fields cannot be omitted ( issue 27 ).
  • Fixed: Release LIB configuration is obsolete ( issue 28 ). There may be some people using Release LIB configuration, so the configuration was made up-to-date.

New in CrashRpt 1.2.2 (Jun 9, 2011)

  • WTL files are now included into CrashRpt distribution.
  • Completely removed dependency on zip_utils (it is better to use minizip).
  • Removed vs.2008 project files. If you need to compile in VS 2008 and higher, use VS project convertor.
  • Modifyed communication between CrashRpt.dll and CrashSender.exe. Now XML file is used for this purpose instead of named pipe.
  • Refactored code. After crash, all complex actions are done outside of the crashed process (inside of CrashSender.exe). This includes taking desktop screenshot, minidump generation, file copying, file compression and sending.
  • Introduced silent mode (CrashRpt sends report silently without showing GUI). This is useful for services and server processes.
  • Improved documentation (restyling).
  • Introduced multi-part HTTP uploads. This will help to send large error reports more effectively.
  • Fixed: Doesn't work in Windows 2000 ( issue 17 )
  • Fixed: CrashSender doesn't work on Windows 2000 ( issue 21 )
  • Fixed: mistyping? ( issue 18 )
  • Fixed: inconsistency in xml Crash Log ( issue 20 )
  • Fixed some problems with UTF-8 encoded strings written by tinixml.
  • Fixed: crprober.exe does not work well ( issue 19 )
  • New: Introcuded an ability to specify the folder where crash reports are created ( issue 22 )
  • New: Introduced an ability to export error report through "Export..." button on Error Report Details dialog.

New in CrashRpt 1.2.1 r530 (Dec 28, 2009)

  • Refactored crash report generation and sending functionality. Now report files are stored in unzipped state, compression is performed during sending procedure. This will be required for huge reports (that will be fully supported in the future).
  • Added support of x64 platform
  • Added an ability to make screenshots of the screen or the main app window on crash through crAddScreenshot() function
  • More information is collected on crash (memory usage, open handles count and GUI resources)
  • Ability to add custom text properties to the crash descriptor through crAddProperty() function
  • New function crAddFile2() improving the application-defined files addition.
  • Ability to control which dbghelp.dll to use
  • Ability to define the type of minidump (from normal size to huge size)
  • Contributed by crcode.s. Fixed incorrectly displayed file size in DetailsDlg
  • Fixed untranslatable Close button of DetailsDlg
  • Fixed: Access to CCrashHandler::m_ThreadExceptionHandlers should be synchronized

New in CrashRpt 1.2.0 r475 (Dec 28, 2009)

  • Reorgranized the include files; moved from 'CrashRptinclude' to 'include'.
  • Support of error report batch processing (crprober.exe tool).
  • New application programming interface for error report processing (CrashRptProbe.dll).
  • Introduced functions crpOpenErrorReport(), crpCloseErrorReport(),
  • crpGetProperty(), crpGetLastErrorMsg(). Fixed problem with missing gzio.c ( issue 6 ).
  • Extended documentation : new section 'Automating Error Report Processing'.

New in CrashRpt 1.1.3 r416 (Sep 28, 2009)

  • Support of globalization and RTL languages.
  • Reorganized and improved documentation; New pages Architecture Overview and Internationalization Support.
  • Added element in the beginning of crash descriptor XML.

New in CrashRpt 1.1.2 r373 (Aug 31, 2009)

  • crInstall: Ability to select what exception handlers to install
  • Extended CR_INSTALL_INFO with new members: pszPrivacyPolicyURL and dwFlags.
  • New API function crInstallToCurrentThead2().
  • Improved documentation; Fixed some mistakes; Added info on compiling CrashRpt in VC++ Express
  • Using standard Windows convention __stdcall instead of __cdecl in API function declarations
  • Using undecorated API function names (extern "C")
  • Using static zlib linkage instead of zlib DLL
  • Replaced obsolete ATL 3.0 string conversion macros with self-written class strconv_t.
  • Fixed some compilation warnings in VC++ Express
  • Fixed wrong "unh" message box in unhandled exception handler
  • Fixed bug in CUtility::GetOSFriendlyName() -- Operating system build number and service pack are never retrieved
  • Fixed error with writing 'ExceptionCode' to XML (always zero)
  • Writing exception code to XML in hex format
  • Refactored code of crEmulateCrash()