社区
VB基础类
帖子详情
Microsoft Application Error Reporting实现原理
LesterYu
2002-10-06 09:28:51
诸位在使用各种Microsoft应用程序是否发生过错误?如果你安装了较新版本的软件,会带上一个dw.exe的东西。它能在程序出错时报告错误。我想知道其实现原理。
...全文
202
回复
打赏
收藏
Microsoft Application Error Reporting实现原理
诸位在使用各种Microsoft应用程序是否发生过错误?如果你安装了较新版本的软件,会带上一个dw.exe的东西。它能在程序出错时报告错误。我想知道其实现原理。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BURNINTEST--硬件检测工具
PassMark BurnInTest V5.3 Copyright (C) 1999-2008 PassMark Software All Rights Reserved http://www.passmark.com Overview ======== Passmark's BurnInTest is a software tool that allows all the major sub-systems of a computer to be simultaneously tested for reliability and stability. Status ====== This is a shareware program. This means that you need to buy it if you would like to continue us
ing
it after the evaluation period. Installation ============ 1) Uninstall any previous version of BurnInTest 2) Double click (or Open) the downloaded ".exe" file 3) Follow the prompts UnInstallation ============== Use the Windows control panel, Add / Remove Programs Requirements ============ - Operat
ing
System: Windows 2000, XP, 2003 server, Vista (*) - RAM: 32 Meg - Disk space: 6 Meg of free hard disk space (plus an additional 10Meg to run the Disk test) - DirectX 9.0c or above software for 3D graphics and video tests (plus work
ing
DirectX drivers for your video card) - SSE compatible CPU for SSE tests - A printer to run the printer test, set-up as the default printer in Windows. - A CD ROM + 1 Music CD or Data CD to run the CD test. - A CD-RW to run the CD burn test. - A network connection and the TCP/IP network
ing
software installed for the Network Tests Pro version only: - A serial port loop back plug for the serial port test. - A parallel port loop back plug for the parallel port test. - A USB port loop back plug for the USB port test. - A USB 2.0 port loop back plug for the USB 2.0 port test. - PassMark ModemTest V1.3 1010 (or higher) for Plugin Modem test
ing
. - PassMark KeyboardTest V2.2 1011 (or higher) for Plugin Keyboard test
ing
. - PassMark Firewire Plugin V1.0 1000 (or higher) and a 揔anguru FireFlash?drive for Plugin Firewire test
ing
. (*) Windows 2000 does not support the CD-RW burn test. The advanced RAM test is only available under Windows 2000 and Windows XP professional (the other RAM tests are supported under the other OS's). Users must have administrator privileges. Windows 98 and Windows ME ========================= Windows 98 and ME are not supported in BurnInTest version 5.3 and above. Use a version of BurnInTest prior to 5.2 for compatibility with W98 and ME. Windows 95 and Windows NT ========================= Windows 95 and NT are not supported in BurnInTest version 4.0 and above. Use a version of BurnInTest prior to 3.1 for compatibility with W95 and NT. Version History =============== Here is a summary of all changes that have been made in each version of BurnInTest. Release 5.3 build 1035 revision 4 WIN32 release 10 November 2008 - Lenovo China specific build. Lenovo system detection changes. Release 5.3 build 1035 revision 3 WIN32 release 7 November 2008 - Lenovo China specific build. Lenovo system detection changes. Release 5.3 build 1035 revision 2 WIN32 release 6 November 2008 - Lenovo China specific build. Lenovo logo and Lenovo system detection changes. Release 5.3 build 1035 WIN32 release 5 November 2008 - Lenovo China specific build. Changes include: Lenovo logo added, Lenovo system support only, 32-bit BurnInTest restricted to 32-bit Windows and BurnInTest run as administrator. Release 5.3 build 1034 WIN32 release 3 October 2008 - Correction to sett
ing
the CD burn test drive in preferences. - Changed the mechanism to check for the required DirectX Direct3D as the previous method did not work on some system (some W2003 servers). - Enhanced the mechanism to
report
memory hardware
error
s in the Memory torture test. Release 5.3 build 1033 WIN32 release 1 October 2008 - Changes to correct a BurnInTest crash problem on some systems. When the disk and standard RAM tests are run for many hours, BurnInTest may have disappeared with no
error
message. Release 5.3 build 1030 WIN32 release 25 September 2008 - Changes to investigate a BurnInTest crash problem on XP SP3. Release 5.3 build 1028 WIN32 release 11 September 2008 - Two 2D Video memory test crash bug workarounds implemented. Crashes in (i) DirectX DirectShow and (ii) ATI atiumdag.dll library. - A hang on startup has been corrected. A 2 minute timeout has been added to the collection of system information. - Video playback, Hard disk and CD/DVD test 'no operations'
error
report
ing
changed. - When BurnInTest crashes, it will not generate a "minidump" file. Minidumps will need to be sent to
Microsoft
as per the normal process. However, a log entry will be added to the normal BurnInTest log. - Changes to trace logg
ing
to reduce activity when trace logg
ing
is not turned on. - Note: We have seen a
report
of the Video Playback fail
ing
(crash) due to a faulty video codec, ffdshow.ax. If you are us
ing
this we suggest you try a different Video file and codec. Release 5.3 build 1027 revision 0003 WIN32 release 19 August 2008 - Changed the 2D test to wait for the Video Playback test in order to allow memory allocation for the Video playback test. - Changed the Memory test to wait for the Video Playback test and 3D test to allow memory allocation for these tests. - Minor changes to the No operation
error
watchdog timer for the CD and Hard disk tests. - Minor correction to the Butterfly seek test. - Video playback trace logg
ing
increased. Release 5.3 build 1027 revision 0002 WIN32 release 19 August 2008 - Video playback trace logg
ing
increased. Release 5.3 build 1027 WIN32 release 31 July 2008 - Corrected a bug where BurnInTest would fail to start if Activity trace level 2 logg
ing
(debug level logg
ing
) was turned on and the Logg
ing
Summarize option was also selected. - Minor change to the serial port test where, if "Disable RTS/CTS and DSR/DTR test phase" was selected the DTR and RTS lines would be explicitly disabled to prevent any toggl
ing
of these lines. Previously these where enabled, but not explicitly toggled. Release 5.3 build 1026 WIN32 release 17 July 2008 - Updated Level 2 and Level 3 CPU cache information for newer Intel CPU's. - Updated the detection of Hyperthread
ing
and the number of logical CPUs for a new Intel CPU. Release 5.3 build 1025 WIN32 release 11 July 2008 - Corrected a Disk test bug where on rare occasions a verification
error
is incorrectly displayed. This is dur
ing
the random seek
ing
phase of the "Random data with random seek
ing
" test mode and only occurs with some specific test sett
ing
s. Release 5.3 build 1024 WIN32 release 10 July 2008 - Workaround for the rare crash bug in Vista in atklumdisp.dll at address 0x730676ae. - Added trace debug information for BurnInTest startup and the 3D test. Release 5.3 build 1022 WIN32 release 12 June 2008 - Corrected a bug where the 2D video memory test in BurnInTest v5.3.1020 and v5.3.1021 would
report
a "Not enough video memory available for test"
error
if the test was run a couple of times (without clos
ing
BurnInTest). Release 5.3 build 1021 WIN32 release 5 June 2008 - 32-bit BurnInTest PRO 5.3.1020 would not start on Windows 2000. This has been corrected. Release 5.3 build 1020 WIN32 release 29 May 2008 - BurnInTest could have crashed on access
ing
bad video memory hardware in the 2D test. This problem is now just
report
ed as an
error
(and BurnInTest) continues. - When BurnInTest crashes, it should now generate a "minidump" file to help debug which system component caused the failure (32-bit Pro version only). - Other minor changes. Release 5.3 build 1019 WIN32 release 16 May 2008 - Corrected rare crash bugs in the 2D and Video tests. - Added a hot Key, F4, to set the auto run flag and run the tests (i.e. set "-r" and then run the tests). - Other minor changes. Release 5.3 build 1018 WIN32 release 16 April 2008 - Added an operation watchdog timer for all tests. In rare cases, a s
ing
le test can stop in the operat
ing
system - i.e. there is a problem in the operat
ing
system/ device driver that prevents control be
ing
returned to the BurnInTest for that test. This was added for specialized serial port hardware that could lockup after several hours of test
ing
. Release 5.3 build 1017 WIN32 release 3 April 2008 - Corrected the Advanced Network test to run on non-English Operat
ing
Systems. Release 5.3 build 1016 WIN32 release 17 March 2008 - Added additional USB 2.0 Loopback plug test initialization to ensure plugs are in a 'clean' state when start
ing
the USB tests. This was added due to
report
ed USB data verification
error
s after scripted USB test
ing
across multiple reboots. Release 5.3 build 1015 WIN32 release 27 February 2008 - Increased
error
report
ing
detail for the standard RAM test, when the -v command line option is used. Release 5.3 build 1014 WIN32 release 30 January 2008 - Corrected a problem where the loopback sound test could run out of memory if run for several days. Release 5.3 build 1013 WIN32 release 31 December 2007 - Improved the
report
ing
of COM port
error
s such that in the rare case a COM port locks up in the Operat
ing
System, the
error
is still
report
ed. - Corrected a bug, where in rare cases, the result summary could be duplicated in a log file. - Updated license management, in an attempt to remove a rare crash on startup. Release 5.3 build 1012.0002 WIN32 release 31 October 2007 - New build of Rebooter (64-bit Windows correction). - Clarifications in the help file. Release 5.3 build 1012 WIN32 release 17 October 2007 - Changed the Standard Network Test, "Test all available NICs" such that the number of Network Addresses specified in Preferences->Network will be the number of NICs tested. This will
error
faulty NICs that are not detected by the BurnInTest auto NIC detection mechanism. - Minor change to the 2D memory test when run with the 3D test (multiple large windows) and the RAM test. Aimed at correct
ing
sympton: Access Violation 0x00404CF9. - Corrections to the mapp
ing
of paths with ".\". Release 5.3 build 1011 rev 2 WIN32 release 17 September 2007 - Modified the Multi-Process torture test to better describe a new
error
message introduced in V5.3.1010. Release 5.3 build 1011 - Public release WIN32 release 11 September 2007 - Corrected a bug where "Limited Evaluation Version" could be displayed even after BUrnInTest is licensed (problem introduced in 32-bit BITPRO V5.3.1010). - Changed the Sound test to allow any of the tests (Wave, Midi or MP3) to be excluded from test
ing
by blank
ing
the filename. - The Command line parameter "-j" (cycle disk test patterns after each test file) could fail dur
ing
the Random data test due to the mechanism used in BurnInTest. The Random data test is now excluded from the test when (and only when) the "-j" command line parameter is specified. - In rare circumstances, the 2D test number of operations could potentially overflow and become negative. This has been corrected. - In rare circumstances, BurnInTest could hang if there was a system problem in reboot
ing
the system (ie. it failed to shutdown) us
ing
PassMark Rebooter. This has been corrected. Release 5.3 build 1010 - Public release WIN32 release 28 August 2007 WIN64 release 28 August 2007 - As BurnInTest exercises system components, it is possible for faulty hardware or device drivers to cause software exceptions. These are normally seen as Windows
report
ing
an "Access Violation". Changes have been made to handle these
error
s for the memory tests (for faulty RAM) and direct device driver access (for some device driver
error
s), as well as overarch
ing
more generic handl
ing
of these types of
error
s. - Corrected a software failure bug on startup (particularly Vista) where a DirectX function was caus
ing
software failures in "dsetup.dll". - Updated the "Activity Event" generated with the periodic results summary
report
to be numbered (from 1 upwards) such that when "Logg
ing
->Summarize", these events are not summarized. - Corrected a bug where the HTML log name could include a duplicate of the filename prefix. - Updated to the Common
Error
s section of help. Release 5.3 build 1009 - Public release WIN32 release 16 August 2007 - Corrected a 'zip' version cleanup problem. Release 5.3 build 1008 - Komputer Swiat Expert magazine version WIN32 STD release 14 August 2007 Release 5.3 build 1007 - Public release WIN32 release 7 August 2007 - Corrected a disk test startup problem for some large RAID systems when SMART test
ing
is selected. - Added additional logg
ing
for the disk test when an
error
occurs. - Changed the 3D test when run with the 2D EMC test to be 'behind' the EMC scroll
ing
H's test. Allowed the test to be easily exited when runn
ing
the 3D test in Fullscreen mode. - Minor corrections to the Advanced Network test. - Changed the log file reference of "Network Name" to "Computer Name". WIN64 specific: - MMX and 3DNow! are obsolete for native 64-bit
application
s. BurnInTest has been changed to show "NA" (Not applicable) in the test window for these tests. Release 5.3 build 1006 - Limited release WIN32 release 17 July 2007 - Standard Network Test changes: - Increased the number of destination IP addresses from 4 to 6. - Added an option (default) "Test all available NICs", which will force traffic down every system NIC with a basic algorithm of NIC1 to IP Address 1, NIC2 to IP Address 2 etc. - Advanced Network test changes: - Simplified the test. - Removed the UDP and FTP options. The Standard Network test can be used as a UDP test. - Removed the Advanced Network test specific logg
ing
, and included all relevant logg
ing
in the standard BurnInTest logg
ing
mechanism. - Replaced the complicated dynamic balanc
ing
of any system NIC to any Endpoint NIC with a simpler static allocation on test startup. - Changed the
error
detection mechanism to detect
error
s much more quickly. - Re-worked the
error
s
report
ed. - Changed the CPU throttl
ing
mechanism to reduce the CPU load. - Updated endpoint.exe. - Removed checkend.exe (now obsolete). - Changed the logg
ing
rollover to work with the output of interim results (e.g. per 1 minute). Previously rollover only occurred on
error
events written to the log. This also corrected an issue where interim results summary logg
ing
could be written to the physical disk with some delay (based on Windows disk cach
ing
). - Corrected the "Unknown"
report
ing
of some operat
ing
systems. - Added the skipp
ing
of the Butterfly seek disk test when run on Vista and insufficient privileges. A notification of this is logged. - Intel Quad core L2 cache size
report
ing
has been added. - Added new SMART threshold descriptions. - Added new disk test options, accessed via command line parameters: /ka: keep disk test files in all cases (c.f. /k keep disk test files on
error
). /j: cycle patterns between test files. Note: Random seek
ing
will be skipped in this case. This option has been added to allow multiple test patterns to be used across very large disks. - Added an option to make some test sett
ing
s unavailable to the user. An example configuration file available on request. Release 5.3 build 1005 0001 (STD only) - Public release WIN32 release 29 June 2007 - Corrected a bug introduced in v5.3.1005.0000 STD (only) where the disk test would use up more and more system resources, thus caus
ing
test failures. Release 5.3 build 1005 rev 0003 (PRO only) - Limited public release WIN32 release 21 June 2007 - Correction to the behavior of a static RAM test pattern (rather than the default Cyclic pattern). Release 5.3 build 1005 rev 0002 (PRO only) - Limited public release WIN32 release 15 June 2007 - The "Select all CD/DVD drives" preferences option has been made user configurable, rather than us
ing
pre-defined test sett
ing
s. Release 5.3 build 1005 rev 0001 (PRO only) - Limited public release WIN32 release 13 June 2007 - Bug correction for the CD auto selection feature. Release 5.3 build 1005 - Public release WIN32 release 18 May 2007 WIN64 release 18 May 2007 - In a number of cases, such as when specify
ing
the post test
application
, uppercase
application
names were not accepted. This has been corrected. - The default font height in the 2D scroll
ing
H's test should have been Arial 9. This has been changed. - The BurnInTest Video playback test incompatibility with Nero 6 and Nero 7 has been resolved. - The BurnInTest disk test throughput for dual core systems has been improved. Release 5.3 build 1004 rev2 - Limited release WIN32 release 8 May 2007 - Changed the Standard Network Test to better
report
packet
error
ratios. In addition, a new warn
ing
has been added to indicate that
error
s have been detected but not enough packets have been attempted to be sent to determine accurately whether the configured
error
ratio has been exceeded. - Corrected a bug where the "append to exist
ing
" logg
ing
option did not work across scripted reboots, and a new log file was created instead of append
ing
to the exist
ing
log file. - If the 3D test was runn
ing
, then BurnInTest blocked a forced close of BurnInTest, this block
ing
has been removed. - Changed the PASS and FAIL windows so they can now also be closed by select
ing
the Windows Close "X" button. Release 5.3 build 1004 - Public release WIN32 release 10 April 2007 WIN64 release 10 April 2007 - Corrected a problem introduced in BurnInTest v5.2 where BurnInTest could run out of memory (the main symptom) when tests where run for long periods (> 12hours). WIN64 specific: - Corrected a bug where the number of cores
report
ed on a Quad core system was incorrectly
report
ed as CPU packages. Release 5.3 build 1003 - Limited release WIN32 release 3 April 2007 - A new 2D GUI (Graphical User Interface) test has been added to the standard 2D graphics test. - Resolved an issue where BurnInTest would fail to start on Vista systems with DEP enabled for all programs. - On some systems, the Disk test could pause momentarily even when a duty cycle of 100% was specified. This pause has been removed. - When runn
ing
the CD test under BartPE (Pre-install environment) 4 additional specific files are skipped as they are unavailable for test
ing
. - Minor bug corrections. Release 5.3 build 1002 rev 0001 - Limited release WIN32 release 16 March 2007 - Changes to the new 3D test: - Added a Full screen non-windowed test for the primary monitor, where the resolution can be selected from those supported by the Graphics card. - Added the user option of changes the vertical sync in the full screen non-windowed test to be either the Maximum rate of the graphics card, or to be the rate of the monitor (this may prevent some flicker). - Added a more complex water texture us
ing
DirectX Vertex Shader 2.0 and Pixel Shader 2.0 effects (if supported by the graphics card). This applies to 3D test windows that are 800x600 or larger. - Changed some
error
messages from window displays (that require user intervention) to standard
error
report
ing
. Added new 3D
error
messages and more detail in the
error
report
ing
. - Changed the definition of an operation to be a successfully displayed frame. - Changed the definition of a cycle to be 2000 frames. - Changed 2D video memory test to wait until the 3D test starts (as per V5.2 and earlier). - A new version of rebooter has been included. - If BurnInTest is started with the -p command line parameter (to use the bit.exe directory for files such as the configuration file), then BurnInTest will start rebooter with the -p option. This can be useful when runn
ing
BurnInTest and Rebooter from a USB drive. Release 5.3 build 1002 - Limited release WIN32 release 19 March 2007 - Corrected a bug introduced in V5.2 where select
ing
accumulated logg
ing
could lead to rebooter fail
ing
to launch. Release 5.3 build 1001 - Limited release WIN32 release 16 March 2007 - The 3D test has been improved. The 3D ball test has been replaced with a more complex 3D terrain test. This will more thoroughly exercise modern graphics cards. Further, the 3D test has been changed to support multi- monitor test
ing
(up to 4 monitors). Accord
ing
ly, a new preferences section has been added for the 3D test. The multi-monitor test options are only available in BurnInTest Professional. Release 5.3 build 1001 - Limited release WIN32 release 16 March 2007 - The 3D test has been improved. The 3D ball test has been replaced with a more complex 3D terrain test. This will more thoroughly exercise modern graphics cards. Further, the 3D test has been changed to support multi- monitor test
ing
(up to 4 monitors). Accord
ing
ly, a new preferences section has been added for the 3D test. The multi-monitor test options are only available in BurnInTest Professional. - BurnInTest uses DirectX 9.0c. This version of BurnInTest uses a more recent version of the
Microsoft
DirectX Direct3D component, October 2006. BurnInTest has been modified to detect and install this component (file) if it does not exist. - A command line parameter -X has been added to skip the DirectX version check
ing
on BurnInTest start-up. - With the recent introduction of multi-monitor support for the Video Playback test, it is now more likely that the system will run out of memory when runn
ing
multiple video tests simultaneously, particularly when more memory intensive codecs are used. A specific Insufficient resources to complete test message has been added in this case, rather than the previous more generic unrecoverable
error
message. The video test have been changed to attempt recovery from this and the more generic unrecoverable
error
, by clos
ing
the current video and open
ing
the next. The logg
ing
detail has been increased. - Note: The BurnIntest sample video pack has been altered with the DivX Compressed Video file be
ing
removed due to the DivX codec fail
ing
with this Video file when used with multiple simultaneous Video playbacks. Access Violation: 0x69756e65. See: http://www.passmark.com/download/bit_download.htm - The video description is now collected for a larger range of Vista systems. - Windows 98 and ME are no longer supported. Please see www.passmark.com for a link to an older version of BurnInTest that will support W98/ME. Release 5.3 build 1000 rev2 - Limited release WIN32 release 9 March 2007 - A command line parameter -P has been added to allow the BurnInTest directory to be used rather than the User's personal directory. This may be useful when runn
ing
BurnInTest from a USB drive for example. - When runn
ing
the CD test under BartPE (Pre-install environment) 4 additional specific files are skipped as they are unavailable for test
ing
. - A change has been made to support Hmonitor temperature monitor
ing
on Vista. - A number of undocumented command line parameters have been documented: -B: BurnInTest will generate additional Serial port test information when activity trace level 2 logg
ing
is set. -E [data]: Specifies the test data to use in the serial port test. -M: Automatically display the Machine ID Window when BurnInTest is started. -U: Force BurnInTest to set logg
ing
on at startup. Release 5.3 build 1000 - Limited release WIN32 release 8 March 2007 - Changed the 2D and Video playback tests to support multi-monitor test
ing
. - When runn
ing
the CD test under BartPE (Pre-install environment) 4 specific files are skipped as they are unavailable for test
ing
. Release 5.2 build 1006 - Limited release WIN32 release 1 March 2007 - Corrected a bug where BurnInTest would fail to start on certain Vista systems. - Corrected a bug where some files where the full path was not specified would be incorrectly referenced in the Program Files directory, rather than the user personal directory. Release 5.2 build 1005 - Public release WIN32 release 21 February 2007 WIN64 release 21 February 2007 - Updated the Graphics card description for Windows Vista systems. - Updated the Advanced Network test to indicate that elevated administrator privileges are required when runn
ing
on Vista. - Moved files from the Program files directory for the Advanced Network Test (BurnInTest, EndPoint and CheckEnd). Specifically, the User
Application
directory is now used for the temporary test FTP files and the User Personal directory is now used for the log and configuration files. - Updated the cleanup process for when runn
ing
the "zip" version of BurnInTest Professional from a CD or flash drive. - Updated the help link from the Windows Start, All Programs, BurnInTest menu for the browser based help. - Corrected a bug where Disk preferences displayed in the Preferences window would be incorrect when the system had no Floppy drive. - Corrected a bug where the Advanced Network test might not have been displayed until after enter
ing
the Duty Cycle selection (ie. just chan
ing
from the standard network test to the advanced test). - Corrected a USB bug in Beta 5.2.1003 where the test would not run if there where there insufficient USB loopback plugs attached to the system. - Included a new version of PassMark Rebooter that supports Windows Vista. Release 5.2 build 1004 - Public Pre-release WIN32 release 13 February 2007 - Updated the
report
ed Operat
ing
system for the various Vista product editions. - Disk test sett
ing
s can be configured for "Automatically Select all Hard Disks", rather than us
ing
defaults. - When runn
ing
the CD test under BartPE (Pre-install environment) 4 specific files are skipped as they are unavailable for test
ing
. - Corrected a bug where temperature information could be duplicated in the HTML
report
. - Corrected a bug certain 'save
report
' warn
ing
messages could be truncated. - Help file updated. Release 5.2 build 1003 - BETA RELEASE ONLY WIN32 release 23 January 2007 - Changed the USB preferences and test to more completely check for the PassMark USB Loopback plugs and ignore any device that is not a PassMark USB Loopback plug (due to
report
ed incorrect detection with another hardware device). - Increased Trace level debugg
ing
for Intel temperature monitor
ing
. - Corrected a bug with the disk test introduced in 5.2.1001 Release 5.2 build 1002 - BETA RELEASE ONLY WIN32 release 22 January 2007 - Increased the number of disks that can be tested from 20 to 26. - Updated BurnInTest to reflect that Temperature monitor
ing
with Intel Desktop utilities is supported. Intel Desktop utilities essentially is a replacement for Intel Active Monitor for newer Intel motherboards. - Increased Trace level debugg
ing
for Intel temperature monitor
ing
. Release 5.2 build 1001 - BETA RELEASE ONLY WIN32 release 19 January 2007 - Windows Vista support. - The Block size used in the disk test is now configurable per disk. The default block size has been increased from 16KB to 32KB. - An option has been added to automatically detect all of the CD and DVD drives for the CD test (as per the disk test). This may be useful when test
ing
across many systems with different optical drive configurations. - Increased Trace level debugg
ing
for Intel temperature monitor
ing
. - Bugs corrected: - Disk preferences - in rare cases invalid default values could be set for a disk, an invalid value
error
would occur and the values would need to be manually corrected. Release 5.2 build 1000 - limited release WIN32 release 8 January 2007 - Windows Vista support. - Reduced the need for elevated administrator privileges: - Changed the location of the disk test files from the root directory of the test volume to a BurnInTest data files subdirectory (e.g from "C:\" to "C:\BurnInTest test files\") - Moved many of the files from the Program Files directory to the User directory for Windows 2000, XP and Vista. When runn
ing
BurnInTest on Windows 98, ME or from a key.dat file (e.g. from a USB drive with a licensed key.dat) BurnInTest will store these files in the BurnInTest program directory. Specifically, the follow
ing
files have been moved from the Program Files directory to the User Personal directory, e.g. Vista - "C:\Users\\Documents\PassMark\BurnInTest\" XP - "My Documents\PassMark\BurnInTest\" Files: Configuration file, Configuration load/save default directory, Save log file and image default directory, parallel port override "ioports.dat" directory, default command line script directory, log file directory, video file directory, Plugin directory, machine id file directory, Run as script default directory, CD burn image, Advanced network FTP temp files. - Replaced the Help system with Browser based help. - Changed the Disk test block size from 16KB to 256KB. It is planned to make this user configurable in the next build. Release 5.1 build 1014 WIN32 release 2 November 2006 WIN64 release 2 November 2006 - Corrected a bug when runn
ing
on Vista, where the Standard network test would
report
a checksum
error
when the transmitted data was correct. - Corrected a bug where BurnInTest would not stop the tests based on the number of test cycles for the Plugin test or the Advanced Network test. - Made the "Could not set USB2Test mode" USB
error
message more specific by add
ing
an
error
for insufficient system resources. - Changed the preferences Window to fit on an 800x600 resolution screen. - Corrected a minor bug in Activity level 2 trace logg
ing
with the 'hide duplicate' preference sett
ing
. - Corrected a minor memory leak if the 2D test failed to initialize (such as due to a DirectX problem). - The Parallel port test may now be used on Windows Vista. Specifically, the PassMark device driver used for the parallel port test could not be loaded on 64-bit Windows Vista as it was not digitally signed. It is now digitally signed. Release 5.1 build 1013 revision 0002 WIN32 release 19 September 2006 WIN64 release 19 September 2006 - Corrected an Access Violation problem
report
ed by a customer on a particular MB. Release 5.1 build 1013 WIN32 release 7 September 2006 WIN64 release 7 September 2006 - The "Notes" section has been added to the Customer results certificate. - Some additional configuration range validation has been added. Release 5.1 build 1012 WIN32 release 15 August 2006 - Corrected a false
report
of a "Unable to get disk volume extent information" for the disk butterfly seek test. - Advanced Network test changes for
error
s: "Corrupt header - packet discarded" and "Advanced Network test timed out" - Advanced Network test Endpoint changes for problems on non-English Operat
ing
Systems and systems with the Windows "Network Interface" performance statistics disabled. - SMART parameters on a Samsung Hard Disk caused BurnInTest to fail when runn
ing
the disk test with SMART thresholds enabled. This has been corrected. - The 2D scroll
ing
H's test could display corrupt characters on the second and subsequent test run. This has been corrected. - A problem with the Integer maths test where the results could display a negative number of operations has been resolved. - Minor improvements to the help file. - HTML help file added for Windows Vista and Longhorn Server. - Minor improvements to the
Error
Classification file (
error
descriptions). - Some CD Trace level 1 logg
ing
has been moved to trace level 2. - Trace level 1 logg
ing
has been added to the test clos
ing
software. - New build of Endpoint.exe (1.0 1010). Release 5.1 build 1011 WIN32 release 6 July 2006 - New Advanced Network test
error
report
ing
added in the previous build V5.1 1010 has been removed. - A broader range of USB 2.0 Loopback plugs can now be used with BurnInTest. Release 5.1 build 1010 WIN32 release 4 July 2006 - Corrected the HTML
report
description of the L2/L3 CPU cache when the L3 cache size could not be determined. Advanced network changes: - Endpoints ran at 100% CPU load as they contained no throttl
ing
. This impacted their ability to effectively handle multiple threads handl
ing
TCP/UDP messag
ing
. Throttl
ing
has been added to the EndPoint side to reduce CPU load. This does not greatly impact Network load. - Throttl
ing
on the BurnInTest side contained a sleep that was not insignificant. This could have impacted the BurnInTest data test thread to to handle incom
ing
TCP and particularly UDP messages. This sleep has been reduced and other throttl
ing
parameters changed to suit. (ie. smaller sleeps more often). - EndPoint systems with x NICs (where x > 1),
report
ed themselves as an Endpoint with x NICs, x times. Effectively register
ing
with BurnInTest as x * x EndPoint NICS. This impacted the effectiveness of the load distribution to EndPoint NICs. An Endpoint system now only registers the once with BurnInTest. - The BurnInTest side did not
report
data verification Checksum
error
s for full duplex test
ing
. This
error
determination has been corrected and
report
ing
added. - The Test statistics sent from the Endpoint to BurnInTest could fail if the statistics block is split across 2 lower level TCP send packets. This could lead to problems like incorrect
report
ing
of Endpoint determined checksum
error
s, Endpoint load and load balanc
ing
. Further it would lead to an Endpoint testthread be
ing
put into an endless TCP send loop. This would eventually br
ing
the Endpoint system to its knees as more and more of these test threads go into this state. This has been corrected. - The Data Received
report
ed by BurnInTest was double counted. This has been corrected. Release 5.1 build 1009 WIN32 release 23 June 2006 - Plugin test
error
classifications were incorrect in the log file detailed description. - Corrections to the advanced network test (BurnInTest and EndPoint). Release 5.1 build 1008 - limited release WIN32 release 20 June 2006 - Advanced network changes corrections. Most notably, a bug where part of the payload data could be lost if the payload block (eg. 1000 bytes) was split across 2 (or more) lower level TCP packets. - Added version
report
ing
for Endpoints. Release 5.1 build 1007 - limited release WIN32 release 16 June 2006 Advanced network changes: - Corrected a BurnInTest access Violation introduced in V5.1 1006. - The Endpoint now
report
s its version and build to BurnInTest and BurnInTest
report
s this in the log file if it is an earlier version than expected. This is to help avoid the situation where old Endpoints are run on the Network, that may not be compatible with the version of BurnInTest be
ing
run by the user. - Removed a timeout
report
in a specific instance where a timeout is not an
error
. - Changed the Endpoint rebalanc
ing
and poll
ing
to occur less often after the test has been runn
ing
3 minutes. This is to help allow
ing
the handl
ing
of poll
ing
from a larger number of multiple copies of BurnInTest on the Network. - Added a connection retries on failure for the Endpoint. - Corrected a memory leak in the Endpoint. - Increased the number of sockets supported. - Corrected some Advanced Network
error
classifications. Release 5.1 build 1006 - limited release WIN32 release 14 June 2006 - Improvements to the Advanced Network test (both BurnInTest V5.1 1006 and EndPoint V1.0 1004) to remove corrupted false packet corruption
error
s. Improved the timeout recovery mechanism. Added some validation to the Windows Network performance data used for NIC utilization. - Changes to the collection of Disk drive information on startup to try to resolve a startup issue on Systems with a large number of physical drives and 'unusual' WMI nam
ing
s. Release 5.1 build 1005 WIN32 release 2 June 2006 - Corrected a bug in the Advanced network test where the test would not recover from timeout
error
s. The test appears to be runn
ing
, but the results are 0 and the number of connected End Points are 0. Also improved the retry on timeout mechanism. - Removed some duplication in
error
report
ing
in the Advanced Network test. - Changed the Advanced Network display of Utilization to ensure a maximum of 100% displayed. - Corrected an Advanced Network test bug where the number of
Error
s
report
ed in the test window would not take into account the corrupt packet threshold, and an
error
would be added for each occurrence of the corrupt packet (rather than when the user set threshold was reached). Release 5.1 build 1004b WIN32 release 25 May 2006 (not publicly released) - Corrected the default Advanced network corrupt packet threshold value. - Updated the data entry fields in the CD preferences when a different CD drive is selected. - The Advanced Network specific log files should be concatenated for a script run. This was only occurr
ing
for the first NIC under test. The concatenation will now occur for each NIC under test, when run from a script. - Corrected a bug where a log file name specified with no directory path could be incorrect. - Corrected a bug where the customer "Test Certificate"
report
incorrectly translated the "%" character from a customer specific HTML template. eg would be translated to . - The "Advanced Network test
error
" (215) has been removed and replaced with other exist
ing
error
messages 214, 219, 220, 221 or 222. - Added the Customer name and Technician name to the text and HTMl
report
s. Previously, this information was only included in the "Test Certificate"
report
. - We have added a commandline option to specify the Serial port test data as a constant value. To specify specific data for the Serial port test you should specify e.g. "bit.exe /E 23" from the command line where 23 is in decimal and will be used for all test data (instead of random data). The vales should be between 0 and 255. Release 5.1 build 1004 WIN32 release 19 April 2006 (not publicly released) - Added the COM port speed of 921600 Kbits/s for RS 422/RS485 test
ing
. - Changed the CD test to ensure that the entire test CD data is not cached on systems with a large amount of RAM. - Added a -M command line option to display the Machine ID window automatically when BurninTest starts. - Changed the 2D EMC scroll
ing
H's test to work on multiple monitors were the resolution on each is different. - Changed log files such the syntax "..\" could be used for files in the directory up a level. - Minor correction to the advanced network test. Release 5.1 build 1003 WIN32 release 18 April 2006 WIN64 release 18 April 2006 - Changed the Advanced network test to allow a corrupt packet threshold value up to 1 million. - Bundled a new version of rebooter. Release 5.1 build 1002 WIN32 release 11 April 2006 WIN64 release 11 April 2006 - Corrections to the translation of V4.0 to V5 configuration files. Note: Configuration files in V5.x builds prior to V5.1 1002 could become corrupted if a V4.0 configuration file is loaded. - Corrected a bug where the main Window size and location were not restored on restart
ing
BurnInTest. - Changes to the SMART attribute logg
ing
to support a greater range of Disk drive device drivers. Added additional Activity Level 2 trace logg
ing
. - Added an option to use CTS (Clear To Send) flow control in the loop back stage of the COM port test. - Corrected a bug where the CPU L3 cache could be
report
ed as -1. - Help file updates. Release 5.1 build 1001 WIN32 release 30/March/2006 - Digitally signed the BurnInTest
application
to allow it to run under Windows Server "Longhorn". Note, previously only the installation package was digitally signed. - Updated the
report
ed Operat
ing
system descriptions, includ
ing
: - Windows Vista - Windows Server "Longhorn" - Corrected a bug where the Advanced network information was not displayed on the main window when it was run from a script. - The Advanced Network Corrupt threshold packet has been changed to produce an
error
every time the
error
is received after the threshold is reached. - Corrected the
report
ing
of "Network, Packet discarded due to corrupt header" as a Network test
error
. - Corrected a bug where a new log file was not created if (only) the log prefix changed dur
ing
the runn
ing
of a script file. - Split the "Network, Advanced Network test
error
"
error
into 6
error
s: "Network, Advanced Network test
error
" "Advanced Network Socket
error
" "Advanced Network Send
error
" "Advanced Network Send
error
- no data sent" "Advanced Network Receive
error
" "Advanced Network Receive
error
- no data received" Added either activity trace 1 or trace 2 logg
ing
for each of the
error
s, with additional information where available. - Added additional Serial port activity trace 2 logg
ing
. Includ
ing
the logg
ing
of all transmit buffer data when the /B command line is used. Release 5.1 build 1000 WIN32 release 27/March/2006 (not a public release) Added the follow
ing
features: - Create the log file directory specified in the Logg
ing
Options if it does not exist. - Condense the Advanced Network Test log files to one log file per IP address per script run, when run from a script. - Added an option to summarize duplicate
error
s in the log file. - Color coded
error
s based on severity in the Detailed event log Window and the HTML log file. - Added an option to only create a log file when BurnIn actually runs a test as opposed to every time BurnIn is executed. - Added a warn
ing
if a test thread completes with 0 cycles and 0 operations. - In the results summary html file, inserted more spac
ing
between the 揘otes? and 揇etailed Event Log? - Changed the Activity Trace file format to be the same as the log file, ie. text or HTML, rather than always text. - The 2D 揝croll
ing
H抯?test will now display across multiple screens/displays ?i.e. all active displays. - A threshold has been added for the 揷orrupt header ?packet discarded?event in the advanced network options so that a 揊ail?is not produced when that is the only th
ing
that produces
error
s. - Added loop
ing
capability in script
ing
. LOOP n { ? } where n is the number of times to repeat the commands in the brackets. - Corrected a bug where PASS could be displayed if the Advanced Network test was the only test runn
ing
, but it failed. Release 5.0 build 1001 WIN32 release 9/March/2006 - Corrected a bug where Network directory paths were not accepted, eg. for the log file name and post test
application
file name. - The CPU maths test has been improved to better load up all CPU's. Previously BurnInTest started a maths test thread per physical CPU package. BurnInTest has been changed to start a maths test thread per CPU (= num. physical CPU packages x num. CPU cores x num. logical CPUs). - The CPU preferences have been changed to allow the CPU maths test to be locked to any CPU (ie. select a CPU from a list of CPU's where the number of CPU's = num. physical CPU packages x num. CPU cores x num. logical CPUs). - The Parallel and Serial port
error
message have been modified in the case where a test plug may not have been connected to indicate that the user should check this. - Corrected a bug where a licenced version could display the message "[limited evaluation version]" Release 5.0 build 1000 WIN32 release 24/February/2006 WIN64 release 24/February/2006 NEW TESTS & IMPROVEMENTS TO EXIST
ING
TESTS BurnInTest Standard and Professional versions. - Added a customer style results certificate. This will save the log file in HTML format but from the perspective of a end customer. This
report
style can be tailored by the user (through chang
ing
an HTML template). - An MP3 playback test has been added to the Sound test. - A color printer test has been added. - A new post test option to allow the results to be printed automatically at the end of a test has been added. - Added new Post-test action options of: - Optionally allow the user to "run an external program & exit" after BIT has been manually stopped. Modify the $RESULT variable to "PASS (manual abort)" or "FAIL (manual abort)" for this case. - Allow the results window to be displayed for all post test options (except Reboot). - Added new Pre-test actions to allow an external
application
to be run and have BIT wait for the
application
to exit. On continu
ing
, BIT will run the subscript file (of script
ing
commands) if it has been created. - Changed the manual Stop buttons, to abort the runn
ing
of a script (rather than just the current test). BurnInTest Professional specific. - Added a "Plugin" test that allows users to develop their own BurnInTest test modules for specialized hardware. Three external plugins may be specified at once. - A Modem test has been added to BurnInTest as a Plugin. PassMark's ModemTest Version V1.3 (latest build) is required. - A KeyBoard Test has been added to BurnInTest as a Plugin. PassMark's KeyboardTest Version V2.2 (latest build) is required. - A Firewire Test has been added to BurnInTest as a Plugin. PassMark's free Firewire plugin is required and a "Kanguru FireFlash" drive is required. - A new advanced network test has been added. BurnInTest Professional only. - The Memory test now allows the user to specify the type of test pattern to be used. - Test
ing
with the USB 2.0 Loopback plug has been improved. When used with USB 2.0 Loopback device driver V2.0.1002,
error
details will now be
report
ed for: CRC
error
report
ed by USB Host controller BIT STUFF
error
report
ed by USB Host controller DATA TOGGLE MISMATCH
error
report
ed by USB Host controller STALL PID
error
report
ed by USB Host controller DEVICE NOT RESPOND
ING
error
report
ed by USB Host controller PID CHECK FAILURE
error
report
ed by USB Host controller UNEXPECTED PID
error
report
ed by USB Host controller DATA OVERRUN
error
report
ed by USB Host controller DATA UNDERRUN
error
report
ed by USB Host controller BUFFER OVERRUN
error
report
ed by USB Host controller BUFFER UNDERRUN
error
report
ed by USB Host controller NOT ACCESSED
error
report
ed by USB Host controller FIFO
error
report
ed by USB Host controller TRANSACTION (XACT)
ERROR
report
ed by USB Host controller BABBLE DETECTED
error
report
ed by USB Host controller DATA BUFFER
ERROR
report
ed by USB Host controller In the case of these
error
s, BurnInTest will re-attempt the operation. The user can set the
Error
report
ing
to be skipped for the initial recovery attempt. IMPROVEMENTS TO TEST
ING
FACILITIES - Added a disk autoconfig, such that when tests are started, the disk drives and sett
ing
s will be defaults to all disks (exc. CD/DVD). This may be useful when test
ing
multiple systems with different hard disk drive letters. - Store the position of the Main window on exit
ing
BurnInTest. On start
ing
BurnInTest, position the main window as saved; on start
ing
tests, position the test windows as saved. - Allow a "drag & drop" of the Configuration file directly on the BurnInTest program icon. - Allow test
ing
99.5% to 100% of disk, instead of 94%, for disks that do not contain the Windows directory and do not contain a swap file. - Added the ability to log interim results, which may be useful for unstable systems. - AMD and Intel Dual core
report
ing
added. - New L2 CPU cache sizes added to
report
s. - CPU support for SSE3, DEP and PAE added to
report
s. - Shortcut of "F1" for contextual help added to all Windows. - Improve the flexibility in specify
ing
the EXECUTEWAIT script
ing
command for sleeper. - Updated logg
ing
header information with the hard and optical drive model. - The 2D and 3D tests have been updated to use DirectX 9.0c. - User interface updated. - The HTML
report
format has been improved. - The BurnInTest configuration file extension has been renamed from .cfg to use .bitcfg, to ensure the configuration file is associated with BurnInTest. - An
error
message indicat
ing
that accumulated log files are not supported when run from CD or DVD has been added. - To allow smaller test files with very large disks, the minimum disk test file size has been reduced from 0.1% to 0.01% of the disk space. - Log events were previously shown as "INFORMATION" if they were low level
error
s, or simply additional information (not
error
s). "INFORMATION" now refers to a low level
error
, and "LOG NOTE" now refers to additional information (that is not in the
error
count). - Improved the specific detail of the Serial Port
error
s detected. BurnInTest now
report
s fram
ing
error
s, buffer overrun
error
s, input buffer overflow
error
s, parity
error
s and Transmit buffer full
error
s as specific
error
messages (rather than a broader
error
description). - Added the /k command line so the user can specify not to delete HDD test files if an
error
occurs. - Increased Activity trace level 1
error
logg
ing
for Serial port test
ing
. - Increased Activity trace level 1
error
logg
ing
for Hyper thread
ing
detection. - Bundled a new version of the Rebooter program. - Improved the Serial port
error
logg
ing
(display
ing
baud rate) and increased Activity trace level 1
error
logg
ing
(display
ing
erroneous data). - Modified the Window sizes to help improve navigation on smaller displays (i.e. 640x480). - The CPU load for the Standard and Torture RAM tests has been made more linear with the duty cycle sett
ing
. Note: This means that compared to the previous build of BurnInTest, less RAM test operations will be run per second (when the duty cycle is less than 100). - Additional debug code and very minor changes in the Loopback sound test. - The Post test option of "Run external
application
and exit" has been modified such that if no external file is specified, this Post test option will just exit BurnInTest. - Allowed the full range of PassMark USB1 loopback plugs to be used with BurnInTest Professional. - Added additional Activity Trace level 2 logg
ing
. - The delay inserted between packets in the USB2 test, when the duty cycle is less than 50, has been changed from at least 1ms to at least 1ms to 50ms (for a Duty Cycle of 49 down to 0). - The subscript commands to configure BurnInTest from an external
application
(i.e. specified in the bit-script-input.txt file and run by specify
ing
either a pre-test or EXECUTEWAIT
application
) has been changed to allow "LOAD" commands (in addition to "SET" script
ing
commands). - Renamed the "
Error
" log to "Event" log. - Changed the order of the items in an Event log line, such that the Severity is the first item. - The EXECUTEWAIT script command has been modified such that the external
application
may provide an input script file (of SET... commands) to be run after the EXECUTEWAIT
application
closes. This allows external
application
s to define test environment parameters (such as the serial number and machine type). - Added script
ing
commands: SETSERIAL "1234-shdfgdhs-GHGHG" SETMACHINETYPE "HP XPS800" SETNOTES "Test notes defined by the external
application
." SETLOG "\Program Files\Plugin\plugin_log" SETPLUGIN "\Program Files\Plugin\plugin.exe" - Added POST TEST
application
parameter substitution to allow values to be passed to an external
application
at the end of a test. These are: $RESULT - "PASS" or "FAIL" will be substituted. $SERIAL - The serial number will be substituted. $MACHINETYPE - The machine type will be substituted. $NOTES - The notes will be substituted. - Added extra logg
ing
for memory allocation
error
s in the disk test - Added "log bad sector increase" and "bad sector threshold" options to disk test. This resulted in a change to the configuration file format and required additional code to automatically convert from old formats. - Modified the user interface in the preferences window for the disk test and the CD test - Improved the handl
ing
of USB 2.0 loopback plugs recovery from sleep states. BUG CORRECTIONS - Corrected a bug where the System and
Application
events logged in the BurnInTest Trace logs were wrong if the event log had reached its maximum size. - Checks that the Sound test files (WAV and MIDI) exist have been added. - The continuous auto updat
ing
of the USB image (USB Loopback plug vs. USB 2.0 Loopback plug) on the main window has been removed. This is now updated on BIT startup, select
ing
Refresh in USB preferences or on start
ing
a test. If there is a serious USB problem, this (together with the USB 2.0 Loopback device driver, V2.0.1002) will avoid the possibility of BurnInTest lock
ing
up. - Corrected a bug with the Butterfly seek mode of the Disk test. This was found to occur with FAT32 disks where the Cylinder size was relatively small and the Sector size relatively large. - Reset Defaults on the Configuration Page now resets the Auto Stop Value. - Reset Defaults on the Configuration Page now resets the color indicators. - The CD test has been modified to skip invalid files either with "?"'s , to avoid
report
ing
error
s that are due to the CD test media filenames. - The Network test results window scroll bar has been corrected. - The Memory torture test could fail on some systems with a small amount of RAM and relatively high memory fragmentation. This has been corrected. - Script
ing
correction for .cmd files. - Corrected a bug that caused problems when runn
ing
the disk test with SMART monitor
ing
turned on. This problem only occurs on a small number of HDD's. - Corrected memory leaks - On occasion, the measured waveform from the loopback sound test may have been slightly altered on start
ing
or stopp
ing
all tests, possibly enough to trigger an
error
. This has been resolved. - If an
error
occurred in the final second of a test, the
error
may have been logged but not included in the big PASS/FAIL results window. This has been corrected. - After runn
ing
a script file that loaded a configuration file, that had a full path specified, the Save and Load configuration menu options no longer worked. This has been corrected. - Previously, the Version of BurnInTest was only written in the First log file after start
ing
BurnInTest. This log line is now written in all log files. - For USB2 tests that have read or write failures, the Windows
error
codes are now included in the level 2 Activity trace log. - Command line parameters may now be passed to a PreTest
application
. - Log files may now use a s
ing
le static filename. This may be useful when the log file is to be parsed by an external program. - Corrected a bug where the Plugin test would stop prematurely. - Corrected the specification of the Script
ing
EXECUTEWAIT filename. - Changed Script process
ing
such that a script is aborted if a script
ing
error
is encountered and Stop on
error
is selected. - Added an indication on the main window that a script is currently runn
ing
("Script currently runn
ing
"). - Corrected the serial port test to identify non-exist
ing
plugs when the Disable RTS/CTS and DSR/DTR test
ing
has been selected. - Corrected the display of strange results (666666)
report
ed by a user, related to copy protection. - Fixed a memory leak bug in the MBM interface which caused memory allocation
error
s. - Added BIT version number to the ASCII log file. - Fixed a bug with the 3D Test that was caus
ing
it to stop before the autostop timer period - Changed an
error
in the tape drive test to a warn
ing
if tape drive doesn't support sett
ing
drive parameters. History of earlier releases: Please see http://passmark.com/products/bit_history.htm Documentation ============= All the documentation is included in the help file. It can be accessed from the help menu. There is also a PDF format Users guide available for download from the PassMark web site. Support ======= For technical support, questions, suggestions, please check the help file for our email address or visit our web page at http://www.passmark.com Order
ing
/ Registration ======================= All the details are in the help file documentation or you can visit our sales information page http://www.passmark.com/sales Compatibility issues with the Network & Parallel Port Tests =========================================================== If you are runn
ing
Windows 2000 or XP, you need to have administrator privileges to run this test. Enjoy.. The PassMark Development team
Active
Report
s 7 2013 V1 4/4
Active
Report
s 7 2013 V1 4/4 共四个压缩文件,请全部下载后解压 Award-winn
ing
.NET
report
ing
tool for Silverlight, Windows Forms, ASP.NET, and Windows Azure with an end-user
Report
Designer, Visual Studio integration, and more. Multi-platform
Report
ing
Component with Pure Power The award-winn
ing
.NET
report
ing
tool for Silverlight, Windows Forms, ASP.NET, and Windows Azure provides
Microsoft
.NET developers with familiar Visual Studio integrated designers and components, as well as an extensive API. Create
report
s rang
ing
in functionality from form-based
report
s such as invoices and insurance documents, to transaction
report
s such as sales and account
ing
, to analytical
report
s such as sales and budget analysis and portfolio analysis. * Active
Report
s joined the ComponentOne product line on July 1, 2012, when ComponentOne became a division of GrapeCity. See what's new in the Active
Report
s 7 release! Why Choose Active
Report
s 7? Multiple
Report
Types to Fit Your
Report
ing
Needs Fixed Page Layout gives developers a new way of creat
ing
report
s where layout is the primary focus. Great for creat
ing
invoices, prospectus
report
s, forms, or other highly structured
report
s. Continuous Page Layout makes it easy to create
report
s us
ing
tables, crosstabs, charts, and other data regions with flexible layouts. Section
Report
s follow the tradition of previous Active
Report
s versions and are similar to Access
report
s. Us
ing
code-behind or scripts, you can respond to the various events that occur while the
report
generates to create extremely customized
report
s that are hard to produce with other products. Fast .NET
Report
ing
Engine Fast .NET
Report
ing
Engine Active
Report
s 7 is optimized for speed. Its unique architecture allows the lean
report
ing
engine to quickly read records from the data source and immediately render them to the output device. The simplicity of the design allows the data to pass through quickly from process
ing
to render
ing
. Flexible .NET API The extensive Active
Report
s 7 API allows Visual Basic and C# developers to completely control the
report
process
ing
engine to fit their needs. Events and properties control: Data retrieval Data transformation Layout Render
ing
In addition, the API gives the developer complete control over the rendered document to allow selective print
ing
or export, post-render draw
ing
or stamp
ing
on pages, n-page, and booklet print
ing
. For added control, Active
Report
s 7 provides unmanaged access to the print job, allow
ing
tray selection and duplex printer management as the document is rendered to the printer. Data Visualization and Layout Data Visualization and Layout Whether you need a simple list
ing
or groups with keep-together control, master-detail
report
s, sub-
report
s, horizontal and vertical multi-column
report
s, address labels and badges, or richly formatted letters with mail merge support, Active
Report
s is the solution. Simple and lightweight
report
controls allow you to easily create dazzl
ing
report
s. With a selection includ
ing
textbox, checkbox, line, shape, cross-section box, image, formatted text with mail merge, barcode (2D and 3D), chart, and other data visualization controls, they support a wide range of business
report
s. You can create
report
s of any size with nearly endless layout options. Rich Data Bind
ing
Rich Data Bind
ing
.NET data sources allow you to connect to any of the standard databases, plus .NET in-memory objects and collections. In addition, unbound data mode opens up the
report
to data from anywhere, in any form. If your
application
can access it, so can the
report
engine. Visual Studio Integrated Design Time Visual Studio Integrated Design Time The Active
Report
s 7
report
designer integrates with the
Microsoft
Visual Studio IDE allow
ing
C# and Visual Basic developers to create
report
s and compile them into their Windows Forms, ASP.NET, and Silverlight
application
s. Active
Report
s Professional Edition users can also use the royalty-free end-user
report
designer control to give similar
report
design functionality to end users within the business
application
. Cross-platform Support Cross-platform Support Active
Report
s 7 offers versatile viewers to extend the reach of your
report
s to every platform. Built-in
report
viewers include Windows Forms, Adobe Flash,
Microsoft
Silverlight, and a rich HTML viewer, all with built-in search functions, hyperlink interaction, a table of contents, and multi-page zoom view support. Active
Report
s includes Adobe PDF export with advanced encryption and international font support,
Microsoft
Excel export, and Rich Text Format (RTF) export. The extensive API allows fine control over the exported documents and their properties. The Active
Report
s
report
ing
engine supports cloud comput
ing
on
Microsoft
's Windows Azure platform under partial trust as well as full trust. Support for Migration from Other
Report
ing
Tools Support for Migration from Other
Report
ing
Tools Active
Report
s 7 helps you preserve your past investments with easy
report
conversion from
Microsoft
Access and SAP Crystal
Report
s, thus greatly reduc
ing
the effort involved in recreat
ing
old
report
s when you migrate. No need to start from scratch! Global Options and Localization Support Global Options and Localization Support Localize the Active
Report
s user interface to meet the needs of all of your international users. (There are fully localized Chinese and Japanese versions for those specific markets.) Localization also extends to the
report
s themselves: the
report
ing
engine can use locale-specific text and formatt
ing
without the need to create multiple
report
s. Deployment Deployment Active
Report
s 7 uses XCOPY deployment, mak
ing
installation of your
application
s incredibly simple. There are no special merge modules to include, no licens
ing
servers to install alongside your
application
, and no onerous activation procedures to go through.
Spark 3.0.0
Application
提交集群原理和源码详解
Spark 3.0.0
Application
提交给集群的原理和源码详解,内容包括Spark
Application
到底是如何提交给集群的:
Application
提交参数配置详解、
Application
提交给集群原理详解、
Application
提交给集群源码详解;...
微软内部资料-SQL性能优化3
Contents Overview 1 Lesson 1: Concepts – Locks and Lock Manager 3 Lesson 2: Concepts – Batch and Transaction 31 Lesson 3: Concepts – Locks and
Application
s 51 Lesson 4: Information Collection and Analysis 63 Lesson 5: Concepts – Formulat
ing
and Implement
ing
Resolution 81 Module 4: Troubleshoot
ing
Lock
ing
and Block
ing
Overview At the end of this module, you will be able to: Discuss how lock manager uses lock mode, lock resources, and lock compatibility to achieve transaction isolation. Describe the various transaction types and how transactions differ from batches. Describe how to troubleshoot block
ing
and lock
ing
issues. Analyze the output of block
ing
scripts and
Microsoft
® SQL Server™ Profiler to troubleshoot lock
ing
and block
ing
issues. Formulate hypothesis to resolve lock
ing
and block
ing
issues. Lesson 1: Concepts – Locks and Lock Manager This lesson outlines some of the common causes that contribute to the perception of a slow server. What You Will Learn After complet
ing
this lesson, you will be able to: Describe lock
ing
architecture used by SQL Server. Identify the various lock modes used by SQL Server. Discuss lock compatibility and concurrent access. Identify different types of lock resources. Discuss dynamic lock
ing
and lock escalation. Differentiate locks, latches, and other SQL Server internal “lock
ing
” mechanism such as spinlocks and other synchronization objects. Recommended Read
ing
Chapter 14 “Lock
ing
”, Inside SQL Server 2000 by Kalen Delaney SOX000821700049 – SQL 7.0 How to interpret lock resource Ids SOX000925700237 – TITLE: Lock escalation in SQL 7.0 SOX001109700040 – INF: Queries with PREFETCH in the plan hold lock until the end of transaction Lock
ing
Concepts Delivery Tip Prior to deliver
ing
this material, test the class to see if they fully understand the different isolation levels. If the class is not confident in their understand
ing
, review appendix A04_Lock
ing
and its accompany
ing
PowerPoint® file. Transactions in SQL Server provide the ACID properties: Atomicity A transaction either commits or aborts. If a transaction commits, all of its effects remain. If it aborts, all of its effects are undone. It is an “all or noth
ing
” operation. Consistency An
application
should maintain the consistency of a database. For example, if you defer constraint check
ing
, it is your responsibility to ensure that the database is consistent. Isolation Concurrent transactions are isolated from the updates of other incomplete transactions. These updates do not constitute a consistent state. This property is often called serializability. For example, a second transaction travers
ing
the doubly linked list mentioned above would see the list before or after the insert, but it will see only complete changes. Durability After a transaction commits, its effects will persist even if there are system failures. Consistency and isolation are the most important in describ
ing
SQL Server’s lock
ing
model. It is up to the
application
to define what consistency means, and isolation in some form is needed to achieve consistent results. SQL Server uses lock
ing
to achieve isolation. Definition of Dependency: A set of transactions can run concurrently if their outputs are disjoint from the union of one another’s input and output sets. For example, if T1 writes some object that is in T2’s input or output set, there is a dependency between T1 and T2. Bad Dependencies These include lost updates, dirty reads, non-repeatable reads, and phantoms. ANSI SQL Isolation Levels An isolation level determines the degree to which data is isolated for use by one process and guarded against interference from other processes. Prior to SQL Server 7.0, REPEATABLE READ and SERIALIZABLE isolation levels were synonymous. There was no way to prevent non-repeatable reads while not prevent
ing
phantoms. By default, SQL Server 2000 operates at an isolation level of READ COMMITTED. To make use of either more or less strict isolation levels in
application
s, lock
ing
can be customized for an entire session by sett
ing
the isolation level of the session with the SET TRANSACTION ISOLATION LEVEL statement. To determine the transaction isolation level currently set, use the DBCC USEROPTIONS statement, for example: USE pubs GO SET TRANSACTION ISOLATION LEVEL REPEATABLE READ GO DBCC USEROPTIONS GO Multigranular Lock
ing
Multigranular Lock
ing
In our example, if one transaction (T1) holds an exclusive lock at the table level, and another transaction (T2) holds an exclusive lock at the row level, each of the transactions believe they have exclusive access to the resource. In this scenario, since T1 believes it locks the entire table, it might inadvertently make changes to the same row that T2 thought it has locked exclusively. In a multigranular lock
ing
environment, there must be a way to effectively overcome this scenario. Intent lock is the answer to this problem. Intent Lock Intent Lock is the term used to mean plac
ing
a marker in a higher-level lock queue. The type of intent lock can also be called the multigranular lock mode. An intent lock indicates that SQL Server wants to acquire a shared (S) lock or exclusive (X) lock on some of the resources lower down in the hierarchy. For example, a shared intent lock placed at the table level means that a transaction intends on plac
ing
shared (S) locks on pages or rows within that table. Sett
ing
an intent lock at the table level prevents another transaction from subsequently acquir
ing
an exclusive (X) lock on the table contain
ing
that page. Intent locks improve performance because SQL Server examines intent locks only at the table level to determine whether a transaction can safely acquire a lock on that table. This removes the requirement to examine every row or page lock on the table to determine whether a transaction can lock the entire table. Lock Mode The code shown in the slide represents how the lock mode is stored internally. You can see these codes by query
ing
the master.dbo.spt_values table: SELECT * FROM master.dbo.spt_values WHERE type = N'L' However, the req_mode column of master.dbo.syslockinfo has lock mode code that is one less than the code values shown here. For example, value of req_mode = 3 represents the Shared lock mode rather than the Schema Modification lock mode. Lock Compatibility These locks can apply at any coarser level of granularity. If a row is locked, SQL Server will apply intent locks at both the page and the table level. If a page is locked, SQL Server will apply an intent lock at the table level. SIX locks imply that we have shared access to a resource and we have also placed X locks at a lower level in the hierarchy. SQL Server never asks for SIX locks directly, they are always the result of a conversion. For example, suppose a transaction scanned a page us
ing
an S lock and then subsequently decided to perform a row level update. The row would obtain an X lock, but now the page would require an IX lock. The resultant mode on the page would be SIX. Another type of table lock is a schema stability lock (Sch-S) and is compatible with all table locks except the schema modification lock (Sch-M). The schema modification lock (Sch-M) is incompatible with all table locks. Lock
ing
Resources Delivery Tip Note the differences between Key and Key Range locks. Key Range locks will be covered in a couple of slides. SQL Server can lock these resources: Item Description DB A database. File A database file Index An entire index of a table. Table An entire table, includ
ing
all data and indexes. Extent A contiguous group of data pages or index pages. Page An 8-KB data page or index page. Key Row lock within an index. Key-range A key-range. Used to lock ranges between records in a table to prevent phantom insertions or deletions into a set of records. Ensures serializable transactions. RID A Row Identifier. Used to individually lock a s
ing
le row within a table.
Application
A lock resource defined by an
application
. The lock manager knows noth
ing
about the resource format. It simply compares the 'str
ing
s' represent
ing
the lock resources to determine whether it has found a match. If a match is found, it knows that resource is already locked. Some of the resources have “sub-resources.” The follow
ing
s are sub-resources displayed by the sp_lock output: Database Lock Sub-Resources: Full Database Lock (default) [BULK-OP-DB] – Bulk Operation Lock for Database [BULK-OP-LOG] – Bulk Operation Lock for Log Table Lock Sub-Resources: Full Table Lock (default) [UPD-STATS] – Update statistics Lock [COMPILE] – Compile Lock Index Lock sub-Resources: Full Index Lock (default) [INDEX_ID] – Index ID Lock [INDEX_NAME] – Index Name Lock [BULK_ALLOC] – Bulk Allocation Lock [DEFRAG] – Defragmentation Lock For more information, see also… SOX000821700049 SQL 7.0 How to interpret lock resource Ids Lock Resource Block The resource type has the follow
ing
resource block format: Resource Type (Code) Content DB (2) Data 1: sub-resource; Data 2: 0; Data 3: 0 File (3) Data 1: File ID; Data 2: 0; Data 3: 0 Index (4) Data 1: Object ID; Data 2: sub-resource; Data 3: Index ID Table (5) Data 1: Object ID; Data 2: sub-resource; Data 3: 0. Page (6) Data 1: Page Number; Data 3: 0. Key (7) Data 1: Object ID; Data 2: Index ID; Data 3: Hashed Key Extent (8) Data 1: Extent ID; Data 3: 0. RID (9) Data 1: RID; Data 3: 0.
Application
(10) Data 1:
Application
resource name The rsc_bin column of master..syslockinfo contains the resource block in hexadecimal format. For an example of how to decode value from this column us
ing
the information above, let us assume we have the follow
ing
value: 0x000705001F83D775010002014F0BEC4E With byte swapp
ing
within each field, this can be decoded as: Byte 0: Flag – 0x00 Byte 1: Resource Type – 0x07 (Key) Byte 2-3: DBID – 0x0005 Byte 4-7: ObjectID – 0x 75D7831F (1977058079) Byte 8-9: IndexID – 0x0001 Byte 10-16: Hash Key value – 0x 02014F0BEC4E For more information about how to decode this value, see also… Inside SQL Server 2000, pages 803 and 806. Key Range Lock
ing
Key Range Lock
ing
To support SERIALIZABLE transaction semantics, SQL Server needs to lock sets of rows specified by a predicate, such as WHERE salary BETWEEN 30000 AND 50000 SQL Server needs to lock data that does not exist! If no rows satisfy the WHERE condition the first time the range is scanned, no rows should be returned on any subsequent scans. Key range locks are similar to row locks on index keys (whether clustered or not). The locks are placed on individual keys rather than at the node level. The hash value consists of all the key components and the locator. So, for a nonclustered index over a heap, where columns c1 and c2 where indexed, the hash would contain contributions from c1, c2 and the RID. A key range lock applied to a particular key means that all keys between the value locked and the next value would be locked for all data modification. Key range locks can lock a slightly larger range than that implied by the WHERE clause. Suppose the follow
ing
select was executed in a transaction with isolation level SERIALIZABLE: SELECT * FROM members WHERE first_name between ‘Al’ and ‘Carl’ If 'Al', 'Bob', and 'Dave' are index keys in the table, the first two of these would acquire key range locks. Although this would prevent anyone from insert
ing
either 'Alex' or 'Ben', it would also prevent someone from insert
ing
'Dan', which is not within the range of the WHERE clause. Prior to SQL Server 7.0, page lock
ing
was used to prevent phantoms by lock
ing
the entire set of pages on which the phantom would exist. This can be too conservative. Key Range lock
ing
lets SQL Server lock only a much more restrictive area of the table. Impact Key-range lock
ing
ensures that these scenarios are SERIALIZABLE: Range scan query S
ing
leton fetch of nonexistent row Delete operation Insert operation However, the follow
ing
conditions must be satisfied before key-range lock
ing
can occur: The transaction-isolation level must be set to SERIALIZABLE. The operation performed on the data must use an index range access. Range lock
ing
is activated only when query process
ing
(such as the optimizer) chooses an index path to access the data. Key Range Lock Mode Again, the req_mode column of master.dbo.syslockinfo has lock mode code that is one less than the code values shown here. Dynamic Lock
ing
When modify
ing
individual rows, SQL Server typically would take row locks to maximize concurrency (for example, OLTP, order-entry
application
). When scann
ing
larger volumes of data, it would be more appropriate to take page or table locks to minimize the cost of acquir
ing
locks (for example, DSS, data warehouse,
report
ing
). Lock
ing
Decision The decision about which unit to lock is made dynamically, tak
ing
many factors into account, includ
ing
other activity on the system. For example, if there are multiple transactions currently access
ing
a table, SQL Server will tend to favor row lock
ing
more so than it otherwise would. It may mean the difference between scann
ing
the table now and pay
ing
a bit more in lock
ing
cost, or hav
ing
to wait to acquire a more coarse lock. A preliminary lock
ing
decision is made dur
ing
query optimization, but that decision can be adjusted when the query is actually executed. Lock Escalation When the lock count for the transaction exceeds and is a multiple of ESCALATION_THRESHOLD (1250), the Lock Manager attempts to escalate. For example, when a transaction acquired 1250 locks, lock manager will try to escalate. The number of locks held may continue to increase after the escalation attempt (for example, because new tables are accessed, or the previous lock escalation attempts failed due to incompatible locks held by another spid). If the lock count for this transaction reaches 2500 (1250 * 2), Lock Manager will attempt escalation again. The Lock Manager looks at the lock memory it is us
ing
and if it is more than 40 percent of SQL Server’s allocated buffer pool memory, it tries to find a scan (SDES) where no escalation has already been performed. It then repeats the search operation until all scans have been escalated or until the memory used drops under the MEMORY_LOAD_ESCALATION_THRESHOLD (40%) value. If lock escalation is not possible or fails to significantly reduce lock memory footprint, SQL Server can continue to acquire locks until the total lock memory reaches 60 percent of the buffer pool (MAX_LOCK_RESOURCE_MEMORY_PERCENTAGE=60). Lock escalation may be also done when a s
ing
le scan (SDES) holds more than LOCK_ESCALATION_THRESHOLD (765) locks. There is no lock escalation on temporary tables or system tables. Trace Flag 1211 disables lock escalation. Important Do not relay this to the customer without careful consideration. Lock escalation is a necessary feature, not someth
ing
to be avoided completely. Trace flags are global and disabl
ing
lock escalation could lead to out of memory situations, extremely poor perform
ing
queries, or other problems. Lock escalation trac
ing
can be seen us
ing
the Profiler or with the general lock
ing
trace flag, -T1200. However, Trace Flag 1200 shows all lock activity so it should not be usable on a production system. For more information, see also… SOX000925700237 “TITLE: SQL 7.0 Lock escalation in SQL 7.0” Lock Timeout
Application
Lock Timeout An
application
can set lock timeout for a session with the SET option: SET LOCK_TIMEOUT N where N is a number of milliseconds. A value of -1 means that there will be no timeout, which is equivalent to the version 6.5 behavior. A value of 0 means that there will be no wait
ing
; if a process finds a resource locked, it will generate
error
message 1222 and continue with the next statement. The current value of LOCK_TIMEOUT is stored in the global variable @@lock_timeout. Note After a lock timeout any transaction contain
ing
the statement, is rolled back or canceled by SQL Server 2000 (bug#352640 was filed). This behavior is different from that of SQL Server 7.0. With SQL Server 7.0, the
application
must have an
error
handler that can trap
error
1222 and if an
application
does not trap the
error
, it can proceed unaware that an individual statement within a transaction has been canceled, and
error
s can occur because statements later in the transaction may depend on the statement that was never executed. Bug#352640 is fixed in hotfix build 8.00.266 whereby a lock timeout will only Internal Lock Timeout At time, internal operations within SQL Server will attempt to acquire locks via lock manager. Typically, these lock requests are issued with “no wait
ing
.” For example, the ghost record process
ing
might try to clean up rows on a particular page, and before it can do that, it needs to lock the page. Thus, the ghost record manager will request a page lock with no wait so that if it cannot lock the page, it will just move on to other pages; it can always come back to this page later. If you look at SQL Profiler Lock: Timeout events, internal lock timeout typically have a duration value of zero. Lock Duration Lock Mode and Transaction Isolation Level For REPEATABLE READ transaction isolation level, update locks are held until data is read and processed, unless promoted to exclusive locks. "Data is processed" means that we have decided whether the row in question matched the search criteria; if not then the update lock is released, otherwise, we get an exclusive lock and make the modification. Consider the follow
ing
query: use northwind go dbcc traceon(3604, 1200, 1211) -- turn on lock trac
ing
-- and disable escalation go set transaction isolation level repeatable read begin tran update dbo.[order details] set discount = convert (real, discount) where discount = 0.0 exec sp_lock Update locks are promoted to exclusive locks when there is a match; otherwise, the update lock is released. The sp_lock output verifies that the SPID does not hold any update locks or shared locks at the end of the query. Lock escalation is turned off so that exclusive table lock is not held at the end. Warn
ing
Do not use trace flag 1200 in a production environment because it produces a lot of output and slows down the server. Trace flag 1211 should not be used unless you have done extensive study to make sure it helps with performance. These trace flags are used here for illustration and learn
ing
purposes only. Lock Ownership Most of the lock
ing
discussion in this lesson relates to locks owned by “transactions.” In addition to transaction, cursor and session can be owners of locks and they both affect how long locks are held. For every row that is fetched, when SCROLL_LOCKS option is used, regardless of the state of a transaction, a cursor lock is held until the next row is fetched or when the cursor is closed. Locks owned by session are outside the scope of a transaction. The duration of these locks are bounded by the connection and the process will continue to hold these locks until the process disconnects. A typical lock owned by session is the database (DB) lock. Lock
ing
– Read Committed Scan Under read committed isolation level, when database pages are scanned, shared locks are held when the page is read and processed. The shared locks are released “behind” the scan and allow other transactions to update rows. It is important to note that the shared lock currently acquired will not be released until shared lock for the next page is successfully acquired (this is commonly know as “crabb
ing
”). If the same pages are scanned again, rows may be modified or deleted by other transactions. Lock
ing
– Repeatable Read Scan Under repeatable read isolation level, when database pages are scanned, shared locks are held when the page is read and processed. SQL Server continues to hold these shared locks, thus prevent
ing
other transactions to update rows. If the same pages are scanned again, previously scanned rows will not change but new rows may be added by other transactions. Lock
ing
– Serializable Read Scan Under serializable read isolation level, when database pages are scanned, shared locks are held not only on rows but also on scanned key range. SQL Server continues to hold these shared locks until the end of transaction. Because key range locks are held, not only will this prevent other transactions from modify
ing
the rows, no new rows can be inserted. Prefetch and Isolation Level Prefetch and Lock
ing
Behavior The prefetch feature is available for use with SQL Server 7.0 and SQL Server 2000. When search
ing
for data us
ing
a nonclustered index, the index is searched for a particular value. When that value is found, the index points to the disk address. The traditional approach would be to immediately issue an I/O for that row, given the disk address. The result is one synchronous I/O per row and, at most, one disk at a time work
ing
to evaluate the query. This does not take advantage of striped disk sets. The prefetch feature takes a different approach. It continues look
ing
for more record pointers in the nonclustered index. When it has collected a number of them, it provides the storage engine with prefetch hints. These hints tell the storage engine that the query processor will need these particular records soon. The storage engine can now issue several I/Os simultaneously, tak
ing
advantage of striped disk sets to execute multiple operations simultaneously. For example, if the engine is scann
ing
a nonclustered index to determine which rows qualify but will eventually need to visit the data page as well to access columns that are not in the index, it may decide to submit asynchronous page read requests for a group of qualify
ing
rows. The prefetch data pages are then revisited later to avoid wait
ing
for each individual page read to complete in a serial fashion. This data access path requires that a lock be held between the prefetch request and the row lookup to stabilize the row on the page so it is not to be moved by a page split or clustered key update. For our example, the isolation level of the query is escalated to REPEATABLE READ, overrid
ing
the transaction isolation level. With SQL Server 7.0 and SQL Server 2000, portions of a transaction can execute at a different transaction isolation level than the entire transaction itself. This is implemented as lock classes. Lock classes are used to control lock lifetime when portions of a transaction need to execute at a stricter isolation level than the underly
ing
transaction. Unfortunately, in SQL Server 7.0 and SQL Server 2000, the lock class is created at the topmost operator of the query and hence released only at the end of the query. Currently there is no support to release the lock (lock class) after the row has been discarded or fetched by the filter or join operator. This is because isolation level can be set at the query level via a lock class, but no lower. Because of this, locks acquired dur
ing
the query will not be released until the query completes. If prefetch is occurr
ing
you may see a s
ing
le SPID that holds hundreds of Shared KEY or PAG locks even though the connection’s isolation level is READ COMMITTED. Isolation level can be determined from DBCC PSS output. For details about this behavior see “SOX001109700040 INF: Queries with PREFETCH in the plan hold lock until the end of transaction”. Other Lock
ing
Mechanism Lock manager does not manage latches and spinlocks. Latches Latches are internal mechanisms used to protect pages while do
ing
operations such as plac
ing
a row physically on a page, compress
ing
space on a page, or retriev
ing
rows from a page. Latches can roughly be divided into I/O latches and non-I/O latches. If you see a high number of non-I/O related latches, SQL Server is usually do
ing
a large number of hash or sort operations in tempdb. You can monitor latch activities via DBCC SQLPERF(‘WAITSTATS’) command. Spinlock A spinlock is an internal data structure that is used to protect vital information that is shared within SQL Server. On a multi-processor machine, when SQL Server tries to access a particular resource protected by a spinlock, it must first acquire the spinlock. If it fails, it executes a loop that will check to see if the lock is available and if not, decrements a counter. If the counter reaches zero, it yields the processor to another thread and goes into a “sleep” (wait) state for a pre-determined amount of time. When it wakes, hopefully, the lock is free and available. If not, the loop starts again and it is terminated only when the lock is acquired. The reason for implement
ing
a spinlock is that it is probably less costly to “spin” for a short time rather than yield
ing
the processor. Yield
ing
the processor will force an expensive context switch where: The old thread’s state must be saved The new thread’s state must be reloaded The data stored in the L1 and L2 cache are useless to the processor On a s
ing
le-processor computer, the loop is not useful because no other thread can be runn
ing
and thus, no one can release the spinlock for the currently execut
ing
thread to acquire. In this situation, the thread yields the processor immediately. Lesson 2: Concepts – Batch and Transaction This lesson outlines some of the common causes that contribute to the perception of a slow server. What You Will Learn After complet
ing
this lesson, you will be able to: Review batch process
ing
and
error
check
ing
. Review explicit, implicit and autocommit transactions and transaction nest
ing
level. Discuss how commit and rollback transaction done in stored procedure and trigger affects transaction nest
ing
level. Discuss various transaction isolation level and their impact on lock
ing
. Discuss the difference between abort
ing
a statement, a transaction, and a batch. Describe how @@
error
, @@transcount, and @@rowcount can be used for
error
check
ing
and handl
ing
. Recommended Read
ing
Charter 12 “Transactions and Triggers”, Inside SQL Server 2000 by Kalen Delaney Batch Definition SQL Profiler Statements and Batches To help further your understand
ing
of what is a batch and what is a statement, you can use SQL Profiler to study the definition of batch and statement. Try This: Us
ing
SQL Profiler to Analyze Batch 1. Log on to a server with Query Analyzer 2. Startup the SQL Profiler against the same server 3. Start a trace us
ing
the “StandardSQLProfiler” template 4. Execute the follow
ing
us
ing
Query Analyzer: SELECT @@VERSION SELECT @@SPID The ‘SQL:BatchCompleted’ event is captured by the trace. It shows both the statements as a s
ing
le batch. 5. Now execute the follow
ing
us
ing
Query Analyzer {call sp_who()} What shows up? The ‘RPC:Completed’ with the sp_who information. RPC is simply another entry point to the SQL Server to call stored procedures with native data types. This allows one to avoid pars
ing
. The ‘RPC:Completed’ event should be considered the same as a batch for the purposes of this discussion. Stop the current trace and start a new trace us
ing
the “SQLProfilerTSQL_SPs” template. Issue the same command as outlines in step 5 above. Look
ing
at the output, not only can you see the batch markers but each statement as executed within the batch. Autocommit, Explicit, and Implicit Transaction Autocommit Transaction Mode (Default) Autocommit mode is the default transaction management mode of SQL Server. Every Transact-SQL statement, whether it is a standalone statement or part of a batch, is committed or rolled back when it completes. If a statement completes successfully, it is committed; if it encounters any
error
, it is rolled back. A SQL Server connection operates in autocommit mode whenever this default mode has not been overridden by either explicit or implicit transactions. Autocommit mode is also the default mode for ADO, OLE DB, ODBC, and DB-Library. A SQL Server connection operates in autocommit mode until a BEGIN TRANSACTION statement starts an explicit transaction, or implicit transaction mode is set on. When the explicit transaction is committed or rolled back, or when implicit transaction mode is turned off, SQL Server returns to autocommit mode. Explicit Transaction Mode An explicit transaction is a transaction that starts with a BEGIN TRANSACTION statement. An explicit transaction can contain one or more statements and must be terminated by either a COMMIT TRANSACTION or a ROLLBACK TRANSACTION statement. Implicit Transaction Mode SQL Server can automatically or, more precisely, implicitly start a transaction for you if a SET IMPLICIT_TRANSACTIONS ON statement is run or if the implicit transaction option is turned on globally by runn
ing
sp_configure ‘user options’ 2. (Actually, the bit mask 0x2 must be turned on for the user option so you might have to perform an ‘OR’ operation with the exist
ing
user option value.) See SQL Server 2000 Books Online on how to turn on implicit transaction under ODBC and OLE DB (acdata.chm::/ac_8_md_06_2g6r.htm). Transaction Nest
ing
Explicit transactions can be nested. Committ
ing
inner transactions is ignored by SQL Server other than to decrements @@TRANCOUNT. The transaction is either committed or rolled back based on the action taken at the end of the outermost transaction. If the outer transaction is committed, the inner nested transactions are also committed. If the outer transaction is rolled back, then all inner transactions are also rolled back, regardless of whether the inner transactions were individually committed. Each call to COMMIT TRANSACTION applies to the last executed BEGIN TRANSACTION. If the BEGIN TRANSACTION statements are nested, then a COMMIT statement applies only to the last nested transaction, which is the innermost transaction. Even if a COMMIT TRANSACTION transaction_name statement within a nested transaction refers to the transaction name of the outer transaction, the commit applies only to the innermost transaction. If a ROLLBACK TRANSACTION statement without a transaction_name parameter is executed at any level of a set of nested transaction, it rolls back all the nested transactions, includ
ing
the outermost transaction. The @@TRANCOUNT function records the current transaction nest
ing
level. Each BEGIN TRANSACTION statement increments @@TRANCOUNT by one. Each COMMIT TRANSACTION statement decrements @@TRANCOUNT by one. A ROLLBACK TRANSACTION statement that does not have a transaction name rolls back all nested transactions and decrements @@TRANCOUNT to 0. A ROLLBACK TRANSACTION that uses the transaction name of the outermost transaction in a set of nested transactions rolls back all the nested transactions and decrements @@TRANCOUNT to 0. When you are unsure if you are already in a transaction, SELECT @@TRANCOUNT to determine whether it is 1 or more. If @@TRANCOUNT is 0 you are not in a transaction. You can also find the transaction nest
ing
level by check
ing
the sysprocess.open_tran column. See SQL Server 2000 Books Online topic “Nest
ing
Transactions” (acdata.chm::/ac_8_md_06_66nq.htm) for more information. Statement, Transaction, and Batch Abort One batch can have many statements and one transaction can have multiple statements, also. One transaction can span multiple batches and one batch can have multiple transactions. Statement Abort Currently execut
ing
statement is aborted. This can be a bit confus
ing
when you start talk
ing
about statements in a trigger or stored procedure. Let us look closely at the follow
ing
trigger: CREATE TRIGGER TRG8134 ON TBL8134 AFTER INSERT AS BEGIN SELECT 1/0 SELECT 'Next command in trigger' END To fire the INSERT trigger, the batch could be as simple as ‘INSERT INTO TBL8134 VALUES(1)’. However, the trigger contains two statements that must be executed as part of the batch to satisfy the clients insert request. When the ‘SELECT 1/0’ causes the divide by zero
error
, a statement abort is issued for the ‘SELECT 1/0’ statement. Batch and Transaction Abort On SQL Server 2000 (and SQL Server 7.0) whenever a non-informational
error
is encountered in a trigger, the statement abort is promoted to a batch and transactional abort. Thus, in the example the statement abort for ‘select 1/0’ promotion results in an entire batch abort. No further statements in the trigger or batch will be executed and a rollback is issued. On SQL Server 6.5, the statement aborts immediately and results in a transaction abort. However, the rest of the statements within the trigger are executed. This trigger could return ‘Next command in trigger’ as a result set. Once the trigger completes the batch abort promotion takes effect. Conversely, submitt
ing
a similar set of statements in a standalone batch can result in different behavior. SELECT 1/0 SELECT 'Next command in batch' Not consider
ing
the set option possibilities, a divide by zero
error
generally results in a statement abort. Since it is not in a trigger, the promotion to a batch abort is avoided and subsequent SELECT statement can execute. The programmer should add an “if @@
ERROR
” check immediately after the ‘select 1/0’ to T-SQL execution to control the flow correctly. Abort
ing
and Set Options ARITHABORT If SET ARITHABORT is ON, these
error
conditions cause the query or batch to terminate. If the
error
s occur in a transaction, the transaction is rolled back. If SET ARITHABORT is OFF and one of these
error
s occurs, a warn
ing
message is displayed, and NULL is assigned to the result of the arithmetic operation. When an INSERT, DELETE, or UPDATE statement encounters an arithmetic
error
(overflow, divide-by-zero, or a domain
error
) dur
ing
expression evaluation when SET ARITHABORT is OFF, SQL Server inserts or updates a NULL value. If the target column is not nullable, the insert or update action fails and the user receives an
error
. XACT_ABORT When SET XACT_ABORT is ON, if a Transact-SQL statement raises a run-time
error
, the entire transaction is terminated and rolled back. When OFF, only the Transact-SQL statement that raised the
error
is rolled back and the transaction continues process
ing
. Compile
error
s, such as syntax
error
s, are not affected by SET XACT_ABORT. For example: CREATE TABLE t1 (a int PRIMARY KEY) CREATE TABLE t2 (a int REFERENCES t1(a)) GO INSERT INTO t1 VALUES (1) INSERT INTO t1 VALUES (3) INSERT INTO t1 VALUES (4) INSERT INTO t1 VALUES (6) GO SET XACT_ABORT OFF GO BEGIN TRAN INSERT INTO t2 VALUES (1) INSERT INTO t2 VALUES (2) /* Foreign key
error
*/ INSERT INTO t2 VALUES (3) COMMIT TRAN SELECT 'Continue runn
ing
batch 1...' GO SET XACT_ABORT ON GO BEGIN TRAN INSERT INTO t2 VALUES (4) INSERT INTO t2 VALUES (5) /* Foreign key
error
*/ INSERT INTO t2 VALUES (6) COMMIT TRAN SELECT 'Continue runn
ing
batch 2...' GO /* Select shows only keys 1 and 3 added. Key 2 insert failed and was rolled back, but XACT_ABORT was OFF and rest of transaction succeeded. Key 5 insert
error
with XACT_ABORT ON caused all of the second transaction to roll back. Also note that 'Continue runn
ing
batch 2...' is not Returned to indicate that the batch is aborted. */ SELECT * FROM t2 GO DROP TABLE t2 DROP TABLE t1 GO Compile and Run-time
Error
s Compile
Error
s Compile
error
s are encountered dur
ing
syntax checks, security checks, and other general operations to prepare the batch for execution. These
error
s can prevent the optimization of the query and thus lead to immediate abort. The statement is not run and the batch is aborted. The transaction state is generally left untouched. For example, assume there are four statements in a particular batch. If the third statement has a syntax
error
, none of the statements in the batch is executed. Optimization
Error
s Optimization
error
s would include rare situations where the statement encounters a problem when attempt
ing
to build an optimal execution plan. Example: “too many tables referenced in the query”
error
is
report
ed because a “work table” was added to the plan. Runtime
Error
s Runtime
error
s are those that are encountered dur
ing
the execution of the query. Consider the follow
ing
batch: SELECT * FROM pubs.dbo.titles UPDATE pubs.dbo.authors SET au_lname = au_lname SELECT * FROM foo UPDATE pubs.dbo.authors SET au_lname = au_lname If you run the above statements in a batch, the first two statements will be executed, the third statement will fail because table foo does not exist, and the batch will terminate. Deferred Name Resolution is the feature that allows this batch to start execut
ing
before resolv
ing
the object foo. This feature allows SQL Server to delay object resolution and place a “placeholder” in the query’s execution. The object referenced by the placeholder is resolved until the query is executed. In our example, the execution of the statement “SELECT * FROM foo” will trigger another compile process to resolve the name again. This time,
error
message 208 is returned.
Error
: 208, Level 16, State 1, Line 1 Invalid object name 'foo'. Message 208 can be encountered as a runtime or compile
error
depend
ing
on whether the Deferred Name Resolution feature is available. In SQL Server 6.5 this would be considered a compile
error
and on SQL Server 2000 (and SQL Server7.0) as a runtime
error
due to Deferred Name Resolution. In the follow
ing
example, if a trigger referenced authors2, the
error
is detected as SQL Server attempts to execute the trigger. However, under SQL Server 6.5 the create trigger statement fails because authors2 does not exist at compile time. When
error
s are encountered in a trigger, generally, the statement, batch, and transaction are aborted. You should be able to observe this by runn
ing
the follow
ing
script in pubs database: Create table tblTest(iID int) go create trigger trgInsert on tblTest for INSERT as begin select * from authors select * from authors2 select * from titles end go begin tran select 'Before' insert into tblTest values(1) select 'After' go select @@TRANCOUNT go When run in a batch, the statement and the batch are aborted but the transaction remains active. The follow script illustrates this: begin tran select 'Before' select * from authors2 select 'After' go select @@TRANCOUNT go One other factor in a compile versus runtime
error
is implicit data type conversions. If you were to run the follow
ing
statements on SQL Server 6.5 and SQL Server 2000 (and SQL Server 7.0): create table tblData(dtData datetime) go select 1 insert into tblData values(12/13/99) go On SQL Server 6.5, you get an
error
before execution of the batch begins so no statements are executed and the batch is aborted.
Error
: 206, Level 16, State 2, Line 2 Operand type clash: int is incompatible with datetime On SQL Server 2000, you get the default value (1900-01-01 00:00:00.000) inserted into the table. SQL Server 2000 implicit data type conversion treats this as integer division. The integer division of 12/13/99 is 0, so the default date and time value is inserted, no
error
returned. To correct the problem on either version is to wrap the date str
ing
with quotes. See Bug #56118 (sqlbug_70) for more details about this situation. Another example of a runtime
error
is a 605 message.
Error
: 605 Attempt to fetch logical page %S_PGID in database '%.*ls' belongs to object '%.*ls', not to object '%.*ls'. A 605
error
is always a runtime
error
. However, depend
ing
on the transaction isolation level, (e.g. us
ing
the NOLOCK lock hint), established by the SPID the handl
ing
of the
error
can vary. Specifically, a 605
error
is considered an ACCESS
error
.
Error
s associated with buffer and page access are found in the 600 series of
error
s. When the
error
is encountered, the isolation level of the SPID is examined to determine proper handl
ing
based on information or fatal
error
level. Transaction
Error
Check
ing
Not all
error
s cause transactions to automatically rollback. Although it is difficult to determine exactly which
error
s will rollback transactions and which
error
s will not, the main idea here is that programmers must perform
error
check
ing
and handle
error
s appropriately.
Error
Handl
ing
Rais
error
Details Rais
error
seems to be a source of confusion but is really rather simple. Rais
error
with severity levels of 20 or higher will terminate the connection. Of course, when the connection is terminated a full rollback of any open transaction will immediately be instantiated by the SQL Server (except distributed transaction with DTC involved). Severity levels lower than 20 will simply result in the
error
message be
ing
returned to the client. They do not affect the transaction scope of the connection. Consider the follow
ing
batch: use pubs begin tran update authors set au_lname = 'smith' rais
error
('This is bad', 19, 1) with log select @@trancount With severity set at 19, the 'select @@trancount' will be executed after the rais
error
statement and will return a value of 1. If severity is changed to 20, then the select statement will not run and the connection is broken. Important
Error
handl
ing
must occur not only in T-SQL batches and stored procedures, but also in
application
program code. Transactions and Triggers (1 of 2) Basic behavior assumes the implicit transactions sett
ing
is set to OFF. This behavior makes it possible to identify business logic
error
s in a trigger, raise an
error
, rollback the action, and add an audit table entry. Logically, the insert to the audit table cannot take place before the ROLLBACK action and you would not want to build in the audit table insert into every
application
s
error
handler that violated the business rule of the trigger. For more information, see also… SQL Server 2000 Books Online topic “Rollbacks in stored procedure and triggers“ (acdata.chm::/ac_8_md_06_4qcz.htm) IMPLICIT_TRANSACTIONS ON Behavior The behavior of fir
ing
other triggers on the same table can be tricky. Say you added a trigger that checks the CODE field. Read only versions of the rows contain the code ‘RO’ and read/write versions use ‘RW.’ Whenever someone tries to delete a row with a code ‘RO’ the trigger issues the rollback and logs an audit table entry. However, you also have a second trigger that is responsible for cascad
ing
delete operations. One client could issue the delete without implicit transactions on and only the current trigger would execute and then terminate the batch. However, a second client with implicit transactions on could issue the same delete and the secondary trigger would fire. You end up with a situation in which the cascad
ing
delete operations can take place (are committed) but the initial row remains in the table because of the rollback operation. None of the delete operations should be allowed but because the transaction scope was restarted because of the implicit transactions sett
ing
, they did. Transactions and Triggers (2 of 2) It is extremely difficult to determine the execution state of a trigger when us
ing
explicit rollback statements in combination with implicit transactions. The RETURN statement is not allowed to return a value. The only way I have found to set the @@
ERROR
is us
ing
a ‘rais
error
’ as the last execution statement in the last trigger to execute. If you modify the example, this follow
ing
RAIS
ERROR
statement will set @@
ERROR
to 50000: CREATE TRIGGER trgTest on tblTest for INSERT AS BEGIN ROLLBACK INSERT INTO tblAudit VALUES (1) RAIS
ERROR
('This is bad', 14,1) END However, this value does not carry over to a secondary trigger for the same table. If you raise an
error
at the end of the first trigger and then look at @@
ERROR
in the secondary trigger the @@
ERROR
remains 0. Carry
ing
Forward an Active/Open Transaction It is possible to exit from a trigger and carry forward an open transaction by issu
ing
a BEGIN TRAN or by sett
ing
implicit transaction on and do
ing
INSERT, UPDATE, or DELETE. Warn
ing
It is never recommended that a trigger call BEGIN TRANSACTION. By do
ing
this you increment the transaction count. Invalid code logic, not call
ing
commit transaction, can lead to a situation where the transaction count remains elevated upon exit of the trigger. Transaction Count The behavior is better explained by understand
ing
how the server works. It does not matter whether you are in a transaction, when a modification takes place the transaction count is incremented. So, in the simplest form, dur
ing
the process
ing
of an insert the transaction count is 1. On completion of the insert, the server will commit (and thus decrement the transaction count). If the commit identifies the transaction count has returned to 0, the actual commit process
ing
is completed. Issu
ing
a commit when the transaction count is greater than 1 simply decrements the nested transaction counter. Thus, when we enter a trigger, the transaction count is 1. At the completion of the trigger, the transaction count will be 0 due to the commit issued at the end of the modification statement (insert). In our example, if the connection was already in a transaction and called the second INSERT, since implicit transaction is ON, the transaction count in the trigger will be 2 as long as the ROLLBACK is not executed. At the end of the insert, the commit is again issued to decrement the transaction reference count to 1. However, the value does not return to 0 so the transaction remains open/active. Subsequent triggers are only fired if the transaction count at the end of the trigger remains greater than or equal to 1. The key to continuation of secondary triggers and the batch is the transaction count at the end of a trigger execution. If the trigger that performs a rollback has done an explicit begin transaction or uses implicit transactions, subsequent triggers and the batch will continue. If the transaction count is not 1 or greater, subsequent triggers and the batch will not execute. Warn
ing
Forc
ing
the transaction count after issu
ing
a rollback is dangerous because you can easily loose track of your transaction nest
ing
level. When perform
ing
an explicit rollback in a trigger, you should immediately issue a return statement to maintain consistent behavior between a connection with and without implicit transaction sett
ing
s. This will force the trigger(s) and batch to terminate immediately. One of the methods of deal
ing
with this issue is to run ‘SET IMPLICIT_TRANSACTIONS OFF’ as the first statement of any trigger. Other methods may entails check
ing
@@TRANCOUNT at the end of the trigger and continue to COMMIT the transaction as long as @@TRANCOUNT is greater than 1. Examples The follow
ing
examples are based on this table: create table tbl50000Insert (iID int NOT NULL) go Note If more than one trigger is used, to guarantee the trigger fir
ing
sequence, the sp_settriggerorder command should be used. This command is omitted in these examples to simplify the complexity of the statements. First Example In the first example, the second trigger was never fired and the batch, start
ing
with the insert statement, was aborted. Thus, the print statement was never issued. print('Trigger issues rollback - cancels batch') go create trigger trg50000Insert on tbl50000Insert for INSERT as begin select 'Inserted', * from inserted rollback tran select 'End of trigger', @@TRANCOUNT as 'TRANCOUNT' end go create trigger trg50000Insert2 on tbl50000Insert for INSERT as begin select 'In Trigger2' select 'Trigger 2 Inserted', * from inserted end go insert into tbl50000Insert values(1) print('---------------------- In same batch') select * from tbl50000Insert go -- Cleanup drop trigger trg50000Insert drop trigger trg50000Insert2 go delete from tbl50000Insert Second Example The next example shows that since a new transaction is started, the second trigger will be fired and the print statement in the batch will be executed. Note that the insert is rolled back. print('Trigger issues rollback - increases tran count to continue batch') go create trigger trg50000Insert on tbl50000Insert for INSERT as begin select 'Inserted', * from inserted rollback tran begin tran end go create trigger trg50000Insert2 on tbl50000Insert for INSERT as begin select 'In Trigger2' select 'Trigger 2 Inserted', * from inserted end go insert into tbl50000Insert values(2) print('---------------------- In same batch') select * from tbl50000Insert go -- Cleanup drop trigger trg50000Insert drop trigger trg50000Insert2 go delete from tbl50000Insert Third Example In the third example, the rais
error
statement is used to set the @@
ERROR
value and the BEGIN TRAN statement is used in the trigger to allow the batch to continue to run. print('Trigger issues rollback - uses rais
error
to set @@
ERROR
') go create trigger trg50000Insert on tbl50000Insert for INSERT as begin select 'Inserted', * from inserted rollback tran begin tran -- Increase @@trancount to allow -- batch to continue select @@trancount as ‘Trancount’ rais
error
('This is from the trigger', 14,1) end go insert into tbl50000Insert values(3) select @@
ERROR
as '
ERROR
', @@TRANCOUNT as 'Trancount' go -- Cleanup drop trigger trg50000Insert go delete from tbl50000Insert Fourth Example For the fourth example, a second trigger is added to illustrate the fact that @@
ERROR
value set in the first trigger will not be seen in the second trigger nor will it show up in the batch after the second trigger is fired. print('Trigger issues rollback - uses rais
error
to set @@
ERROR
, not seen in second trigger and cleared in batch') go create trigger trg50000Insert on tbl50000Insert for INSERT as begin select 'Inserted', * from inserted rollback begin tran -- Increase @@trancount to -- allow batch to continue select @@TRANCOUNT as 'Trancount' rais
error
('This is from the trigger', 14,1) end go create trigger trg50000Insert2 on tbl50000Insert for INSERT as begin select @@
ERROR
as '
ERROR
', @@TRANCOUNT as 'Trancount' end go insert into tbl50000Insert values(4) select @@
ERROR
as '
ERROR
', @@TRANCOUNT as 'Trancount' go -- Cleanup drop trigger trg50000Insert drop trigger trg50000Insert2 go delete from tbl50000Insert Lesson 3: Concepts – Locks and
Application
s This lesson outlines some of the common causes that contribute to the perception of a slow server. What You Will Learn After complet
ing
this lesson, you will be able to: Explain how lock hints are used and their impact. Discuss the effect on lock
ing
when an
application
uses
Microsoft
Transaction Server. Identify the different kinds of deadlocks includ
ing
distributed deadlock. Recommended Read
ing
Charter 14 “Lock
ing
”, Inside SQL Server 2000 by Kalen Delaney Charter 16 “Query Tun
ing
”, Inside SQL Server 2000 by Kalen Delaney Q239753 – Deadlock Situation Not Detected by SQL Server Q288752 – Blocked SPID Not Participat
ing
in Deadlock May Incorrectly be Chosen as victim Lock
ing
Hints UPDLOCK If update locks are used instead of shared locks while read
ing
a table, the locks are held until the end of the statement or transaction. UPDLOCK has the advantage of allow
ing
you to read data (without block
ing
other readers) and update it later with the assurance that the data has not changed since you last read it. READPAST READPAST is an optimizer hint for use with SELECT statements. When this hint is used, SQL Server will read past locked rows. For example, assume table T1 contains a s
ing
le integer column with the values of 1, 2, 3, 4, and 5. If transaction A changes the value of 3 to 8 but has not yet committed, a SELECT * FROM T1 (READPAST) yields values 1, 2, 4, 5. Tip READPAST only applies to transactions operat
ing
at READ COMMITTED isolation and only reads past row-level locks. This lock hint can be used to implement a work queue on a SQL Server table. For example, assume there are many external work requests be
ing
thrown into a table and they should be serviced in approximate insertion order but they do not have to be completely FIFO. If you have 4 worker threads consum
ing
work items from the queue they could each pick up a record us
ing
read past lock
ing
and then delete the entry from the queue and commit when they're done. If they fail, they could rollback, leav
ing
the entry on the queue for the next worker thread to pick up. Caution The READPAST hint is not compatible with HOLDLOCK. Try This: Us
ing
Lock
ing
Hints 1. Open a Query Window and connect to the pubs database. 2. Execute the follow
ing
statements (--Conn 1 is optional to help you keep track of each connection): BEGIN TRANSACTION -- Conn 1 UPDATE titles SET price = price * 0.9 WHERE title_id = 'BU1032' 3. Open a second connection and execute the follow
ing
statements: SELECT @@lock_timeout -- Conn 2 GO SELECT * FROM titles SELECT * FROM authors 4. Open a third connection and execute the follow
ing
statements: SET LOCK_TIMEOUT 0 -- Conn 3 SELECT * FROM titles SELECT * FROM authors 5. Open a fourth connection and execute the follow
ing
statement: SELECT * FROM titles (READPAST) -- Conn 4 WHERE title_ID < 'C' SELECT * FROM authors How many records were returned? 3 6. Open a fifth connection and execute the follow
ing
statement: SELECT * FROM titles (NOLOCK) -- Conn 5 WHERE title_ID 0 the lock manager also checks for deadlocks every time a SPID gets blocked. So a s
ing
le deadlock will trigger 20 seconds of more immediate deadlock detection, but if no additional deadlocks occur in that 20 seconds, the lock manager no longer checks for deadlocks at each block and detection again only happens every 5 seconds. Although normally not needed, you may use trace flag -T1205 to trace the deadlock detection process. Note Please note the distinction between
application
lock and other locks’ deadlock detection. For
application
lock, we do not rollback the transaction of the deadlock victim but simply return a -3 to sp_getapplock, which the
application
needs to handle itself. Deadlock Resolution How is a deadlock resolved? SQL Server picks one of the connections as a deadlock victim. The victim is chosen based on either which is the least expensive transaction (calculated us
ing
the number and size of the log records) to roll back or in which process “SET DEADLOCK_PRIORITY LOW” is specified. The victim’s transaction is rolled back, held locks are released, and SQL Server sends
error
1205 to the victim’s client
application
to notify it that it was chosen as a victim. The other process can then obtain access to the resource it was wait
ing
on and continue.
Error
1205: Your transaction (process ID #%d) was deadlocked with another process and has been chosen as the deadlock victim. Rerun your transaction. Symptoms of deadlock
ing
Error
1205 usually is not written to the SQL Server
error
log. Unfortunately, you cannot use sp_altermessage to cause 1205 to be written to the
error
log. If the client
application
does not capture and display
error
1205, some of the symptoms of deadlock occurr
ing
are: Clients complain of mysteriously canceled queries when us
ing
certain features of an
application
. May be accompanied by excessive block
ing
. Lock contention increases the chances that a deadlock will occur. Triggers and Deadlock Triggers promote the deadlock priority of the SPID for the life of the trigger execution when the DEADLOCK PRIORITY is not set to low. When a statement in a trigger causes a deadlock to occur, the SPID execut
ing
the trigger is given preferential treatment and will not become the victim. Warn
ing
Bug 235794 is filed against SQL Server 2000 where a blocked SPID that is not a participant of a deadlock may incorrectly be chosen as a deadlock victim if the SPID is blocked by one of the deadlock participants and the SPID has the least amount of transaction logg
ing
. See KB article Q288752: “Blocked Spid Not Participat
ing
in Deadlock May Incorrectly be Chosen as victim” for more information. Distributed Deadlock – Scenario 1 Distributed Deadlocks The term distributed deadlock is ambiguous. There are many types of distributed deadlocks. Scenario 1 Client
application
opens connection A, begins a transaction, acquires some locks, opens connection B, connection B gets blocked by A but the
application
is designed to not commit A’s transaction until B completes. Note SQL Server has no way of know
ing
that connection A is somehow dependent on B – they are two distinct connections with two distinct transactions. This situation is discussed in scenario #4 in “Q224453 INF: Understand
ing
and Resolv
ing
SQL Server 7.0 Block
ing
Problems”. Distributed Deadlock – Scenario 2 Scenario 2 Distributed deadlock involv
ing
bound connections. Two connections can be bound into a s
ing
le transaction context with sp_getbindtoken/sp_bindsession or via DTC. Spid 60 enlists in a transaction with spid 61. A third spid 62 is blocked by spid 60, but spid 61 is blocked by spid 62. Because they are do
ing
work in the same transaction, spid 60 cannot commit until spid 61 finishes his work, but spid 61 is blocked by 62 who is blocked by 60. This scenario is described in article “Q239753 - Deadlock Situation Not Detected by SQL Server.” Note SQL Server 6.5 and 7.0 do not detect this deadlock. The SQL Server 2000 deadlock detection algorithm has been enhanced to detect this type of distributed deadlock. The diagram in the slide illustrates this situation. Resources locked by a spid are below that spid (in a box). Arrows indicate block
ing
and are drawn from the blocked spid to the resource that the spid requires. A circle represents a transaction; spids in the same transaction are shown in the same circle. Distributed Deadlock – Scenario 3 Scenario 3 Distributed deadlock involv
ing
linked servers or server-to-server RPC. Spid 60 on Server 1 executes a stored procedure on Server 2 via linked server. This stored procedure does a loopback linked server query against a table on Server 1, and this connection is blocked by a lock held by Spid 60. Note No version of SQL Server is currently designed to detect this distributed deadlock. Lesson 4: Information Collection and Analysis This lesson outlines some of the common causes that contribute to the perception of a slow server. What You Will Learn After complet
ing
this lesson, you will be able to: Identify specific information needed for troubleshoot
ing
issues. Locate and collect information needed for troubleshoot
ing
issues. Analyze output of DBCC Inputbuffer, DBCC PSS, and DBCC Page commands. Review information collected from master.dbo.sysprocesses table. Review information collected from master.dbo.syslockinfo table. Review output of sp_who, sp_who2, sp_lock. Analyze Profiler log for query usage pattern. Review output of trace flags to help troubleshoot deadlocks. Recommended Read
ing
Q244455 - INF: Definition of Sysprocesses Waittype and Lastwaittype Fields Q244456 - INF: Description of DBCC PSS Command for SQL Server 7.0 Q271509 - INF: How to Monitor SQL Server 2000 Block
ing
Q251004 - How to Monitor SQL Server 7.0 Block
ing
Q224453 - Understand
ing
and Resolv
ing
SQL Server 7.0 Block
ing
Problem Q282749 – BUG: Deadlock information
report
ed with SQL Server 2000 Profiler Lock
ing
and Block
ing
Try This: Examine Blocked Processes 1. Open a Query Window and connect to the pubs database. Execute the follow
ing
statements: BEGIN TRAN -- connection 1 UPDATE titles SET price = price + 1 2. Open another connection and execute the follow
ing
statement: SELECT * FROM titles-- connection 2 3. Open a third connection and execute sp_who; note the process id (spid) of the blocked process. (Connection 3) 4. In the same connection, execute the follow
ing
: SELECT spid, cmd, waittype FROM master..sysprocesses WHERE waittype 0 -- connection 3 5. Do not close any of the connections! What was the wait type of the blocked process? Try This: Look at locks held Assumes all your connections are still open from the previous exercise. • Execute sp_lock -- Connection 3 What locks is the process from the previous example hold
ing
? Make sure you run ROLLBACK TRAN in Connection 1 to clean up your transaction. Collect
ing
Information See Module 2 for more about how to gather this information us
ing
various tools. Recogniz
ing
Block
ing
Problems How to Recognize Block
ing
Problems Users complain about poor performance at a certain time of day, or after a certain number of users connect. SELECT * FROM sysprocesses or sp_who2 shows non-zero values in the blocked or BlkBy column. More severe block
ing
incidents will have long block
ing
chains or large sysprocesses.waittime values for blocked spids. Possibl
EurekaLog_7.5.0.0_Enterprise
EurekaLog 7.5 (18-August-2016) 1)..Important: Installation layout was changed. All packages now have version suffix (e.g. EurekaLogCore240.bpl). No files are copied to \bin folder of IDE. Run-time package (EurekaLogCore) is copied to Windows\System32 folder. Refer to help for more info. 2)....Added: RAD Studio 10.1 Berlin support 3)....Added: IDE F1 help integration (on CHM-based IDEs only, i.e. XE8+) 4)....Added "--el_injectjcl", "--el_createjcl", and "--el_createdbg" command-line options for ecc32/emake to inject JEDI/JCL debug info, create .jdbg file, and create .dbg file (
Microsoft
debug format). Later is supported when map2dbg.exe tool is placed in \Bin folder of EurekaLog installation (separate download is required) 5)....Added: Exception2HRESULT in EAppDLL to simplify develop
ing
DLLs with "DLL" profile 6)....Added: Use ShellExecute option for mailto send method 7)....Added: "Mandatory e-mail only when send
ing
" option 8)....Added: Exception line highlight
ing
in disassember view in EurekaLog exception dialog and Viewer 9)....Added: Detection/logg
ing
Delphi objects in disassembly view 10)..Added: Support for multi-monitor info 11)..Added: Support for detection of Windows 10 updates 12)..Added: OS edition detection 13)..Added: "User" and "Session" columns to processes list, processes list is also sorted by session first 14)..Added: Support for show
ing
current user processes only 15)..Added: Expand
ing
environment variables for "Support URL" 16)..Fixed: Range-check
error
on systems with MBCS ACP 17)..Fixed: 64-bit shared memory manager may not work 18)..Fixed: Possible "Unit XYZ was compiled with a different version of ABC" when us
ing
packages 19)..Fixed: FastMM shared MM compatibility 20)..Fixed: Minor bugs in stack trac
ing
(which usually affected stacks for leaks) 21)..Fixed: Rare deadlocks in multi-threaded
application
s 22)..Fixed: Tak
ing
screenshot of minimized window 23)..Fixed: NT service may not log all exceptions 24)..Fixed: SSL port number for Bugzilla 25)..Fixed: Disabl
ing
"Activate Exception Filters" option was ignored 26)..Fixed: Miss
ing
FTP proxy sett
ing
s 27)..Fixed: IntraWeb support is updated up to 14.0.64 28)..Fixed: Retriev
ing
some process paths in processes list 29)..Fixed: CPU view render
ing
in EurekaLog exception dialog and Viewer 30)..Fixed: Some issues in nam
ing
threads 31)..Fixed: Removed exported helper _462EE689226340EAA982C5E8307B3F9E function (replaced with mapped file) 32)..Changed: Descriptions of EurekaLog project options now list correspond
ing
property names of TEurekaModuleOptions class. 33)..Changed: Default template of HTML/web dialog now includes call stack by default 34)..Changed: EurekaLog 7 now can be installed over EurekaLog 6 automatically, with no additional actions/tools EurekaLog 7.4 (7.4.0.0), 26-January-2016 1)....Fixed: Performance issue in DLL exports debug information provider 2)....Fixed: Range-check
error
in Send dialog 3)....Fixed: Possible FPU control word unexpected change 4)....Fixed: JIRA send
ing
to project with no version info 5)....Fixed: Viewer sort
ing
affected by local region sett
ing
s 6)....Fixed: Exception filters ignore sett
ing
s for restart/terminate EurekaLog 7.3 Hotfix 2 (7.3.2.0), 20-October-2015 1)....Fixed: Added workaround for codegen bug in Delphi 7 (possibly - other), bug manifests itself as wrong date-time in
report
s or integer overflows 2)....Fixed: Some MAPI DLLs may not be loaded correctly 3)....Fixed: Handl
ing
SEC_I_INCOMPLETE_CREDENTIALS in SSPI code (added search
ing
client certificate) 4)....Fixed: Range-check
error
when clos
ing
WinAPI dialog EurekaLog 7.3 Hotfix 1 (7.3.1.0), 2-October-2015 1)....Fixed: Long startup time on terminal services servers EurekaLog 7.3 (7.3.0.0), 24-September-2015 1)....Added: RAD Studio 10 Seattle support 2)....Added: Performance counters for run-time (internal logg
ing
with --el_debug) 3)....Fixed: spawned by ecc32/emake processes now start with the same priority 4)....Fixed: ThreadID = 0 in StandardEurekaNotify 5)....Fixed: Dialog auto-close timer may reset without user input 6)....Fixed: Possible hang when quickly load
ing
/unload
ing
EurekaLog-enabled DLL 7)....Fixed: Possible hang in COM DLLs 8)....Fixed: Removed some unnecessary file system access on startup 9)....Fixed: Possible wrong font size in EurekaLog tools 10)..Fixed: Ignore timeouts from Shell_NotifyIcon 11)..Fixed: Possible failure to handle/process stack overflow exceptions 12)..Changed: VCL/CLX/FMX now will assign
Application
.OnException handler when low-level hooks are disabled EurekaLog 7.2 Hotfix 6 (7.2.6.0), 14-July-2015 1)....Added: csoCaptureDelphiExceptions option 2)....Fixed: Handl
ing
of SECBUFFER_EXTRA in SSPI code 3)....Fixed: Several crashes in send
ing
code for very old Delphi versions 4)....Fixed: Regression (from hotfix 5) crash in some IDEs EurekaLog 7.2 Hotfix 5 (7.2.5.0), 1-July-2015 1)....Added: HKCU\Software\EurekaLab\Viewer\4.0\UI\Statuses registry key to allow status customizations in Viewer 2)....Added: "Disable hang detection under debugger" option 3)....Fixed: Wrong button caption in standalone "Steps to reproduce" dialog 4)....Fixed: Wrong pass
ing
of Boolean parameters in JSON (affects JIRA) 5)....Fixed: Wrong sort
ing
of BugID, Count and DateTime columns in Viewer 6)....Fixed: Empty "Count" field/column is now displayed as "1" in Viewer 7)....Fixed: Generic names with "," could not be decoded in Viewer 8)....Fixed: Updated Windows 10 detection for latest builds of Windows 10 9)....Fixed: Sleep and hybernation no longer trigger false-positive "
application
freeze" 10)..Fixed: Wrong function codes for hook
ing
(affects ISAPI
application
type) 11)..Fixed: Wrong button caption in "Steps to Reproduce" dialog 12)..Fixed: Crash when tak
ing
snapshot of some proccesses by Threads Snapshot tool 13)..Fixed: Minor improvements in leak detection EurekaLog 7.2 Hotfix 4 (7.2.4.0), 10-June-2015 1)....Added "ECC32TradeSpeedForMemory" option - defaults to 0/False, could be changed to 1 via Custom/Manual tab. This option will switch from fast-methods to slower methods, but which take less memory. Use 0 (default) for small projects, use 1 for large projects (if ecc32 runs out of memory). 2)....Added: --el_DisableDebuggerPresent command-line option for compatibility with 3rd party debuggers (AQTime, etc.) 3)....Added: AQTime auto-detect 4)....Fixed: Performance optimizations 5)....Fixed: Windows 8+ App Menu shortcuts 6)....Fixed: Unmangl
ing
on x64 EurekaLog 7.2 Hotfix 3 (7.2.3.0), 20-May-2015 1)....Added: Support for token auth in Bugzilla (latest 4.x builds) 2)....Added: Support for API key auth in Bugzilla (5.x) 3)....Added: Support for /EL_DisableMemoryFilter command-line option 4)....Added: Ask
ing
e-mail when user switches to "details" from MS Classic without enter
ing
e-mail 5)....Fixed: Compatibility issues with older Bugzilla versions (3.x) 6)....Fixed: Pass
ing
sett
ing
s between dialogs 7)....Fixed: "Ask for steps to reproduce" dialog is now DPI-aware 8)....Fixed: Silently ignore and fix invalid values in project options EurekaLog 7.2 Hotfix 2 (7.2.2.0), 30-April-2015 1)....Fixed: Confus
ing
message in Manage tool when us
ing
with Trial/Pro 2)....Fixed: Range check
error
in processes information for x64 machines (affects startup of any EurekaLog-enabled module) 3)....Fixed: Auto-detect personality by project extension if --el_mode switch is miss
ing
4)....Fixed: More details for diagnostic send
ing
5)....Fixed: Wrong sett
ing
s for MAP files in C++ Builder 6)....Fixed: Wrong code page was used to decode ANSI bug
report
s 7)....Fixed: Attach
ing
.PAS files instead of .OBJ in C++ Builder 2006+ Pro/Trial EurekaLog 7.2 Hotfix 1 (7.2.1.0), 3-April-2015 1)....Fixed: Wrong float-str convertion when ThousandSeparator is '.' EurekaLog 7.2 (7.2.0.0), 1-April-2015 1)....Important: TEurekaLogV7 component was renamed to TEurekaLogEvents. Please, update your projects by renam
ing
or recreat
ing
the component 2)....Important: File layout was changed for BDS 2006+. Delphi and C++ Builder files are now located in StudioNum folders instead of old DelphiNum and CBuilderNum folders. Update your search paths if needed 3)....Added: Major improvements in DumpAllocationsToFile function (EMemLeaks unit) 4)....Added: MemLeaksSetParentBlock, MemLeaksOwn, EurekaTryGetMem functions (EMemLeaks unit) 5)....Added: Improvements for call stack of dynarrays/str
ing
s allocations (leaks) 6)....Added: "Elem size" when
report
ing
leaks in dynarrays 7)....Added: Stream
ing
unpacked debug info into temporal files instead of memory - this greatly reduces run-time
application
memory usage at cost of slightly slower exception process
ing
. This also reduces memory footprint for ecc32/emake 8)....Added: Show
ing
call stacks for 2 new types of fatal memory
error
s 9)....Added: EMemLeaks._ReserveOutOfMemory to control reserve size of out of memory
error
s (default is 50 Mb) 10)..Added: "MinLeaksLimitObjs" option (EMemLeaks unit) 11)..Added: Fatal memory problem now pauses all threads in
application
12)..Added: Fatal memory problem now change thread name (to simplify debugg
ing
) 13)..Added: boPauseELThreads and boDoNotPauseELServiceThread options (currently not visible in UI) 14)..Added: Support for texts collections out of default path 15)..Added: Support for relative file paths to text collections and external sett
ing
s 16)..Added: Support for environment variables in project option's paths 17)..Added: Support for relative file paths and environment variables for events and various module paths 18)..Added: Logg
ing
in Manage tool 19)..Added: Windows 10 version detection 20)..Added: Stack overflow trac
ing
21)..Added: Major improvements in removal of recursive areas from call stack 22)..Added: Statistics collection 23)..Added: Support for upload
ing
multiple files in JIRA 24)..Added: EResLeaks improvements (new funcs: ResourceAdd, ResourceDelete, ResourceName; support for realloc-like functions) 25)..Fixed: Added workaround for bug in JIRA 5.x 26)..Fixed: Rare EurekaLog internal
error
27)..Fixed: Ignored unhandled thread exceptions (when EurekaLog is disabled) now triggers default OS process
ing
(WER) 28)..Fixed: Irnored exceptions (via per-exception/events) now br
ing
up default RTL handler 29)..Fixed: Format
error
in Viewer 30)..Fixed: Leak of EurekaLog exception information object 31)..Fixed: Wrong chain
ing
exceptions inside GetMem/FreeMem 32)..Fixed: Memory leak after low-level unhook of function 33)..Fixed: Re-parent
ing
after ReallocMem 34)..Fixed: Edit
ing
SMTP server options 35)..Fixed: SMTP server not us
ing
real user e-mail in FROM field 36)..Fixed: Some multi-thread
ing
crashes 37)..Fixed: Fixed crashes in Manage tool 38)..Fixed: Range-check
error
in Viewer 39)..Fixed: EurekaLog
error
dialog appear
ing
under other windows 40)..Fixed: AV when pars
ing
TDS (emake/C++ Builder specific) 41)..Fixed: Unable to build call stacks for other threads due to insufficient rights 42)..Fixed: Version checks for BugZilla and JIRA 43)..Fixed: Not catch
ing
out-of-module AVs when "Capture exceptions only from current module" option is checked 44)..Fixed: Check
ing
for remain
ing
exceptions at shutdown (C++ Builder specific, AcquireExceptionObject returns wrong info) 45)..Fixed: "get call stack of ... threads" / "suspend ... threads" options (avoid rare multithread
ing
race conditions) 46)..Fixed: Crash when nam
ing
thread without EurekaLog thread info 47)..Fixed: Detection of immediate caller for memory funcs 48)..Fixed: Non-work
ing
Assign for options 49)..Fixed: Handl
ing
of explicitly chained exceptions 50)..Fixed: Various exception/thread
ing
fixes for MS debug provider 51)..Fixed: Process
ing
hardware unhandled exceptions (QC #55007) 52)..Fixed: Uncheck
ing
dialog options when export/import 53)..Fixed: BSTR leak 54)..Fixed: JIRA decimal separator bug 55)..Changed: Now unhandled exceptions will be handled by EurekaLog even if EurekaLog is disabled in the thread - only global EurekaLog-enabled status is respected 56)..Changed: Viewer version now matches version of EurekaLog 57)..Changed: DeleteServiceFilesOption now always False by default 58)..Changed: Speed improvements for known memory leaks (reserved leaks) 59)..Changed: Improved logg
ing
for send
ing
60)..Changed: Switch
ing
to detailed mode without enter
ing
(mandatory) e-mail: now EL will not block this 61)..Changed: .ToStr
ing
for exception info now uses compact stack formatter 62)..Removed: Custom field editor (replaced it with link to "Custom" page) 63)..Removed: EurekaLog 7 no longer could be installed over EurekaLog 6. Manage tool from EurekaLog 7 will no longer work with EurekaLog 6. EurekaLog 7.1 update 1 (7.1.1.0), 19-October-2014 1)....Added: "Send in separated thread" option 2)....Added: Hang detection will now use Wait Chain Traversal (WCT) on Vista+ systems to detect deadlocks in any EurekaLog-enabled threads 3)....Added: OS install language and UI language fields in bug
report
4)....Fixed: Viewer is not able to decrypt
report
s with generics 5)....Fixed: EVariantTypeCast
Error
in Viewer when chang
ing
status of some bug
report
s 6)....Fixed: EcxInvalidDataControllerOperation in Viewer 7)....Fixed: Stack overflow at run-time for certain combination of project options 8)....Fixed: BMP re-draw bug in UI dialogs 9)....Fixed: Rogue "corrupted"
error
message for valid ZIPs of certain structure 10)..Fixed: Various range check
error
s in Viewer 11)..Fixed: Possible encod
ing
error
s for non-ASCII
report
s in Viewer on certain environments 12)..Fixed: Wrong count in Viewer when import
ing
report
s without proper "count" field 13)..Fixed: Duplicate
report
s may appear in bug
report
file when "Do not save duplicate
error
s" option is checked 14)..Fixed: False-positive detection of some virtual machines 15)..Fixed: Process
ing
of exceptions from message handlers dur
ing
message pump
ing
cycle inside exception dialogs 16)..Fixed: Access Violation if exception dialog was terminated by exception 17)..Fixed: Hardware exceptions from unit's initialization/finalization may be unprocessed 18)..Changed: "VIEW" action for Viewer now will open ALL bug
report
s inside bug
report
file;
report
s will not be merged by BugID. "IMPORT" action remains the same: duplicate
report
s are merged, "count" is increased 19)..Changed: Charset field in bug
report
now shows both charset and code page EurekaLog 7.1 (7.1.0.00), 23-September-2014 1)....Added: XE7 support 2)....Added: XE6 support 3)....Added: New DLL demo 4)....Added: Custom profiles are now shown in "
Application
type" combo-box 5)....Added: Non-empty "steps to reproduce" will be added to exist
ing
bug tracker issues with empty "steps to reproduce" 6)....Added: Support for custom fields in FogBugz (API version 8 and above) 7)....Added: Support for unsequenced line numbers in PDB/DBG files (--el_source switch) 8)....Fixed: XML bug
report
were generated wrong 9)....Fixed: Strip relocations code for Win64 10)..Fixed: EurekaLog conditional symbols removed improperly when deactivat
ing
EurekaLog 11)..Fixed: Send
ing
report
s to non-default port numbers (affects web-based methods) 12)..Fixed: SSL validation check may reject valid SSL certificate (SMTP Client/Server) 13)..Fixed: SSL
error
s may be not
report
ed 14)..Fixed: Viewer did not consider empty bug
report
s as corrupted 15)..Fixed: "DLL" profile now can be used with packages properly 16)..Fixed: Few rare memory leaks 17)..Fixed: Possible deadlock when us
ing
MS debug info provider 18)..Fixed: C++ Builder project files was saved incorrectly (RAD Studio 2007+) 19)..Fixed: "Show restart checkbox after N
error
s" counts handled exceptions 20)..Fixed: IDE expert's DPR parser (added support for multi-part idents) 21)..Fixed: Rare access violation in hook code 22)..Fixed: Thread handle leaks (added _NotifyThreadGone/_CleanupFinishedThreads functions to be called manually - only when low-level hooks are not installed) 23)..Fixed: EurekaLog's installer hang 24)..Fixed: Bug in object/class validation 25)..Fixed: Bug when us
ing
TThreadEx without EurekaLog 26)..Fixed: Leaks detection may not work with certain combination of options 27)..Fixed: Deadlock in some cases when us
ing
EurekaLog thread
ing
option set to "enabled in RTL threads, disabled in Windows threads". 28)..Changed: TEurekaExceptionInfo.CallStack will be nil until exception is actually raised 29)..Changed: FogBugz and BugZilla: changed bugs identification within project (to allow two bugs exists with same BugID in different projects) 30)..Changed: Blocked manual creation/destruction of ExceptionManager class and EurekaExceptionInfo 31)..Changed: ECC32/EMAKE runs from IDE without chang
ing
priority, added ECC32PriorityClass option 32)..Improved: Minor help and text improvements EurekaLog 7.0.07 Hotfix 2 (7.0.7.2), 11-December-2013 1)....Fixed: Delphi compiler code generation bug (Delphi 2007 and below) 2)....Fixed: Code hooks may rarely be set incorrectly (code stub relocation fails) 3)....Fixed: Win64 call stacks functions now work more similar to 32 bit call stacks EurekaLog 7.0.07 Hotfix 1 (7.0.7.1), 2-December-2013 1)....Added: Alternative caption for e-mail input control when e-mail is mandatory 2)....Fixed: Rare range check
error
in WinAPI visual dialogs 3)....Fixed: Wrong
error
detection for OnException
Error
event 4)....Fixed: Wrong TResponce process
ing
5)....Fixed: Problems with encrypted call stack decod
ing
6)....Fixed: OnPasswordRequest event may have no effect EurekaLog 7.0.07 (7.0.7.0), 25-November-2013 1)....Added: Ability to use Assign between call stack and TStr
ing
s 2)....Added: 64-bit disassembler 3)....Added: Support for variables and relative file paths in "Additional Files" send option 4)....Added: --el_source switch for ecc32/emake compilers 5)....Added: support for post-process
ing
non-Embarcadero executables 6)....Added: EOTL.pas unit for better OmniThreadLibrary integration 7)....Added: RAD Studio XE5 support 8)....Added: New "Capture call stacks of EurekaLog-enabled threads" option 9)....Added: "Deferred call stacks" option for 64-bit 10)..Added: Copy
report
to clipboard now copies both
report
text and
report
file 11)..Added: "AttachBothXMLAndEL
Report
s" option to include both .elx and .el files into bug
report
12)..Added: EMemLeaks.MemLeaks
Error
sToIgnore option to exclude certain memory
error
s from be
ing
considered as fatal 13)..Added: Call stack with any encrypted entry will be fully encrypted now 14)..Added: Option to exclude certain memory
error
s from be
ing
considered as fatal (EMemLeaks.MemLeaks
Error
sToIgnore) 15)..Added: New "HTTP
Error
Code" option for all web-based dialogs (CGI, ISAPI, etc.) 16)..Added: Support for Unicode in Simple MAPI send method (requires Windows 8 or latest
Microsoft
Office) 17)..Added: New value for call stack detalization option (show any addresses, includ
ing
those not belong
ing
to any executable module) 18)..Fixed: Wrong JSON escap
ing
for str
ing
s (affects JIRA send method) 19)..Fixed: Range-check
error
in Viewer when view
ing
bug
report
s with high addresses 20)..Fixed: Select
ing
Win32 service
application
type is no longer resets to custom/unsupported 21)..Fixed: Possible hang when test
ing
dialogs from EurekaLog project options dialog 22)..Fixed: Rare resett
ing
of some options when sav
ing
.eof file 23)..Fixed: Exception pointer could be removed from call stack due to debug details filter
ing
24)..Fixed: Rare case when LastThreadException returned nil while there was active thread exception 25)..Fixed: Rare case when ShowLastThreadException do noth
ing
26)..Fixed: Improved compatibility for OmniThreadLibrary and AsyncCalls 27)..Fixed: Included fix for QC #72147 28)..Fixed: 64-bit MS Debug Info Provider (please, re-setup cache options us
ing
configuration dialog) 29)..Fixed: "Deferred call stacks" option failed to capture call stack when exception is re-raised between threads 30)..Fixed: "Deferred call stacks" option may produce cutted call stack in rare cases 31)..Fixed: Several minor call stacks improvements and optimizations 32)..Fixed: Several 64-bit Pointer Integer convertion issues 33)..Fixed: Multi-thread
ing
deadlock issue 34)..Fixed: Black screenshots in 64 bit
application
s 35)..Fixed: Copy
ing
to clipboard hot-key was registered globally 36)..Fixed: Shell (mailto) send method may fail (64 bit) 37)..Fixed: Possible wrong file paths for attaches in (S)MAPI send methods 38)..Fixed: Environment variables were not expanded in MAPI send method 39)..Fixed: (non-Unicode IDE) EurekaLog is not activated when
application
started from folder with Unicode characters 40)..Fixed: Encrypted call stacks may be encrypted partially by EurekaLog Viewer in rare cases 41)..Fixed: Crash when send
ing
leak
report
with visual progress dialog (only some IDEs are affected) 42)..Fixed: ecc32/emake could not see external configuration file with the same name as project (e.g. Project1.eof for Project1.dpr) 43)..Fixed: Added missed RTL implementation for ExternalProps in Delphi 6 (affects Mantis send
ing
) 44)..Fixed: IDE crash when switch
ing
to threads window 45)..Changed: Removed temporal solution which was used before option to defer call stack creation was introduced 46)..Changed: "Default EurekaLog state in new threads" option is changed from Boolean flag into enum. You need to re-setup this option 47)..Changed: Disable EurekaLog for thread when creat
ing
call stack or handle exception - this increases stability and performance 48)..Changed: LastException property is remove from exception manager as not thread safe. Use LastThreadException property instead 49)..Changed: Lock/Unlock from thread manager and exception manager are removed to avoid deadlocks 50)..Changed: ThreadsSnapshot tool now tries to capture call stack without inject
ing
DLL 51)..Changed: Build events now runs with CREATE_NO_WINDOW flag (console window is hidden) 52)..Improved: More articles in help EurekaLog 7.0.06 (7.0.6.0), 1-June-2013 1)....Added: Experimental 64 bit C++ Builder support 2)....Added: New tab in EurekaLog project options: "External tools" 3)....Added: Option to catch all IDE
error
s (to debug your own IDE packages) 4)....Added: Option to catch only exceptions from current module 5)....Added: Option to defer build
ing
call stack 6)....Added: RAD Studio XE4 support 7)....Added: Support for AppWave 8)....Fixed: Fixed event handlers declarations for the EurekaLog component 9)....Fixed: Infinite recursive calls when us
ing
ToStr
ing
from End
Report
event handler 10)..Fixed: UPX compatibility issue 11)..Fixed: Range check
error
s for system
error
codes 12)..Fixed: Rare IDE stack overflow 13)..Fixed: JIRA unit was not added automatically 14)..Fixed: EurekaLog no longer tries to check for leaks when memory manager filter is disabled 15)..Fixed: Possible deadlock on shutdown with freeze checks active 16)..Fixed: Issues with sett
ing
s dialog and Win32 Service
application
type 17)..Fixed: ThreadSnapshot tool was not able to take snapshots of Win64 processes 18)..Fixed: WCT is disabled for leaks 19)..Fixed: TContext declarations for Win64 20)..Fixed: Check for updates now correctly sets time of last check 21)..Fixed: (Win64) Several Pointer Integer convertion
error
s 22)..Fixed: Internal
error
when exception info object was deleted while it was still used by SysUtils exception object 23)..Fixed: Semeral problems with "EurekaLog look & feel" style for EurekaLog
error
dialog 24)..Fixed: Us
ing
text collection resets exception filters 25)..Fixed: Rare access violation if register
ing
event handlers is placed too early 26)..Fixed: SMTP RFC date formatt
ing
27)..Fixed: Rare empty call stack bug 28)..Fixed: Hang detection was not work
ing
if EurekaLog was disabled in threads 29)..Fixed: AV for double-free TEncod
ing
30)..Changed: ecc32/emake no longer alters arguments for dcc32/make unless new options --el_add_default_options is specified 31)..Changed: Save/load options methods was moved to TEurekaModuleOptions class 32)..Changed: Sav
ing
options to EOF file now adds hidden options and removes obsolete options (only when compatibility mode is off) 33)..Changed: Compil
ing
installed packages now silently ignores EurekaLog instead of show
ing
"File is in use"
error
message 34)..Improved: More readable disk/memory sizes in bug
report
s 35)..Improved: More descriptive sett
ing
s dialog when us
ing
external configuration 36)..Improved: ThreadSnapshot tool now aquired DEBUG priviledge for tak
ing
snapshot. This allows it to bypass security access checks when open
ing
target process. 37)..Improved: Changed BugID default generation to include
error
code for OS
error
s and
error
message for DB
error
s 38)..Improved: Mantis API (WSDL) was updated to the latest version (1.2.14) 39)..Improved: IntraWeb compatibility (old and new versions) 40)..Improved: COM
application
s compatibility 41)..Improved: Build events now accept shell commands 42)..Improved: More articles in help EurekaLog 7.0.05 (7.0.5.0), 7-February-2013 1)....Added: JIRA support 2)....Added: Virtual machine detection (new field in bug
report
s) 3)....Fixed: "Use Main Module options" option was load
ing
empty options for some cases 4)....Fixed: Wrong record declarations for Simple MAPI on Win64 5)....Fixed: Performance issues with batch module options updat
ing
6)....Fixed: Wrong leaks
report
with both MemLeaks/ResLeaks options active 7)....Fixed: Wrong info for nested exceptions in some cases 8)....Fixed: AV under debugger for Win64 (added support for _TExitDllException) 9)....Fixed: Wrong record declarations for process/thread info on Win64 10)..Fixed: Support for FinalBuilder on XE2/XE3 with spaces in file paths 11)..Fixed: Rare double-free of module information (ModuleInfoList) 12)..Fixed: Rare External Exception C000071C on shutdown (only under debuggger) 13)..Fixed: Added large addresses support in Viewer 14)..Fixed: Counter options in memory leaks category is now work
ing
properly 15)..Fixed: Rare range-check
error
in TEurekaModulesList.AddModuleFromFileName 16)..Fixed: FTP force directories dead lock 17)..Fixed: Fixed wrong index be
ing
used when clear
ing
compatibility mode (EurekaLog project options dialog) 18)..Fixed: Default thread state do not affect main thread now 19)..Fixed: Sometimes wrong thread may be used when alter
ing
EurekaLog active state for external thread 20)..Fixed: Wrong DNS lookup on ANSI 21)..Fixed: Problems with IDE expert and projects on network paths 22)..Fixed: Added support for arguments in URLs (HTTP send
ing
) 23)..Fixed: Possible deadlock in multithreaded
application
s 24)..Fixed: Problems with unicode characters in project files on non-Unicode IDEs 25)..Fixed: Infinite recursive calls when us
ing
ToStr
ing
from End
Report
event handler 26)..Fixed: Win64 GetCaller now returns pointer to call instruction, not return address 27)..Improved: Standalone Editor do not force save/load folder by default 28)..Improved: DLL profile now can use additional
application
type hooks automatically 29)..Improved: EurekaLog now able to work with read-only projects (see help for more info) EurekaLog 7.0.04 (7.0.4.0), 2-December-2012 1)....Added: Support for nested exceptions in DLLs 2)....Fixed: Options bug in EurekaLogSendEmail function 3)....Fixed: Weird behaviour for steps to reproduce and custom fields 4)....Fixed: Installation for s
ing
le personality (BDS) 5)....Fixed: Range check
error
in EModules 6)....Fixed: Bug in exception destroy hook 7)....Fixed: OnExceptionNotify event is no longer called for handled exceptions without option checked 8)....Fixed: DEP checks on startup no longer cause exception 9)....Fixed: Invalid declaration for MS Debug API 10)..Fixed: OLE mode change
error
for "Test" send button 11)..Fixed: Fixes for multiply load
ing
of the same DLL 12)..Fixed: Removed PNG compression from icons (tools) 13)..Fixed: Range-check
error
in dialogs with EurekaLog style enabled 14)..Fixed: Send progress dialog may keep busy forever process
ing
window messages (message flood from rapid
application
GUI updates) 15)..Fixed: Thread paus
ing
options now work correctly 16)..Improved: New features in exception filters - mark
ing
exceptions as "expected", filter
ing
by properties (RTTI) 17)..Improved: Recovery from memory
error
s without debugg
ing
memory manager 18)..Improved: Viewer's password edit now hides password with asterisks 19)..Updated: Changed names of .inc files to avoid name conflicts with other libraries 20)..Updated: Help EurekaLog 7.0.03 (7.0.3.0), 6-October-2012 1)....Fixed: Removed some consts keywords for event handlers, so now C++ Builder can alter arguments (this change may require you to adjust your custom code) 2)....Fixed: Fallback code for false-positive results on memory prob
ing
3)....Fixed: Range check
error
s in SSL/TLS implementation 4)....Fixed: "EurekaLog is not active"
error
message dur
ing
send test
ing
5)....Fixed: Incorrect memory prob
ing
when DEP is off (old systems) 6)....Fixed: Installation of 64-bit BPLs 7)....Fixed: Dialog preview 8)....Fixed: Win64 fixes for XE3 9)....Fixed: Support for project groups (mixed project types) 10)..Fixed: Windows 2000 hooks compatibility 11)..Fixed: mailto double quotes escap
ing
12)..Fixed: Simple MAPI WOW compatibility 13)..Fixed: Simple MAPI modal issues 14)..Fixed: Various range check
error
s 15)..Changed: Removed minor version number from program group name 16)..Updated: Help EurekaLog 7.0.02 hot-fix 1 (7.0.2.1), 12-September-2012 1)....Fixed: Range check
error
in Viewer 2)....Fixed: Bug in hook
ing
code EurekaLog 7.0.02 (7.0.2.0), 11-September-2012 1)....Added: Improved memory problems detection 2)....Added: Minor IDE Expert usability improvements 3)....Added: Auto-size feature for detailed
error
dialog 4)....Added: Workaround for QC #106935 5)....Added: Workaround for bug in InvokeRegistry (SOAP/Mantis) 6)....Fixed: Nested OS exceptions 7)....Fixed: Multiply Win64 fixes 8)....Fixed: Compatibility mode fixes 9)....Fixed: Altered behaviour of "Add BugID/Date/ComputerName" options 10)..Fixed: Blank screenshots 11)..Fixed: Check file for corruptions 12)..Fixed: Viewer is unable to decrypt certain bug
report
s 13)..Fixed: Internal DoNoTouch option now works for post-process
ing
and condtionals 14)..Fixed: Possible out of memory
error
for "Do not store class/procedure names" option 15)..Fixed: EurekaLog did not properly install itself when there is only Delphi installed, but no C++ Builder of the same version (or visa versa) 16)..Fixed: Wrong argument for OnRaise event 17)..Fixed: Handl
ing
memory
error
s in initialization/finalization sections 18)..Fixed: Updat
ing
steps to reproduce and user e-mail in bug
report
19)..Fixed: Proper Success/Failure for some
error
s dur
ing
SMTP send 20)..Added: Workaround for wrong GUI fonts 21)..Added: Delphi XE3 support 22)..Added: Individual options for each exception EurekaLog 7.0.01 (7.0.1.0), 28-June-2012 1)....Added: New "Modal window" option (MS Classic and EurekaLog dialogs) 2)....Added: New "Owned window" option (MS Classic and EurekaLog dialogs) 3)....Added: New "Catch EurekaLog IDE Expert
error
s" option 4)....Added: Backup memory manager to recover from critical
error
s 5)....Added: Alternative methods to provide additional features when memory filter is not set 6)....Fixed: Contains fixes from hotfixes 1-3 7)....Fixed: Performance improvements 8)....Fixed: Improved IDE Expert's speed, stability and compatibility with other 3rd party extensions 9)....Fixed: MS Classic dialog size adjustments for large "click here" translations 10)..Fixed: Fixed resett
ing
few EurekaLog project options to defaults 11)..Fixed: Multiply
ing
exception filters when options are assigned (for example: when switch
ing
to/from "Custom" page in project options) 12)..Fixed: (Compatibility mode) Fixed send options merg
ing
13)..Fixed: Updated help EurekaLog 7.0 hot-fix 3 (7.0.0.273), 20-June-2012 --------------------------- 1)....Fixed: ERange
Error
in EResLeaks (THandle Integer) 2)....Fixed: C++ Builder breakpoints for large projects 3)....Fixed: Help (updates policy changed) 4)....Fixed: Text collections apply
ing
5)....Fixed: Build events are now called for unlocked file 6)....Fixed: Proper handl
ing
of C++ Builder project options files from Delphi code (sett
ing
s editor and IDE expert) 7)....Fixed: Terminate/Checked sub-option for MS Classic dialog 8)....Fixed: Confus
ing
message for already post-processed executables 9)....Fixed: Access violation for some EurekaLog IDE menu items when no project was loaded 10)..Fixed: Invok
ing
help for "Variables" window 11)..Fixed: EurekaLog Viewer version info 12)..Fixed: Events in components 13)..Added: Retry option for "Sorry, you must close all runn
ing
IDE instances before installation" 14)..Added: Italian translation 15)..Added: Actual change log is now included into installer 16)..Added: Even more setup logg
ing
17)..Added: New help articles (recompilation and manual installation) EurekaLog 7.0 hot-fix 2 (7.0.0.261), 10-June-2012 --------------------------- 1)....Fixed: Wrong version info
report
ing
to IDE 2)....Added: Workaround for Delphi 2005 TListView bug 3)....Added: Workaround for possible invalid FPU state in exception handlers 4)....Added: Missed declarations for ExceptionLog (compatibility mode) 5)....Fixed: Work for unsaved projects 6)....Added: Escap
ing
for '--' in options (confuses IDE's XML pars
ing
) 7)....Added: Stor
ing
thread's class/name in call stack for terminated threads 8)....Added: More setup logg
ing
9)....Fixed: Help (broken links) 10)..Added: "Upgrade to EurekaLog 7" help topic 11)..Fixed: Clean up installed files EurekaLog 7.0 hot-fix 1 (7.0.0.256), 6-June-2012 --------------------------- 1)....Fixed: Invalid Format() arguments in ELogBuilder. EurekaLog 7.0, 1-June-2012 --------------------------- 1)....Improved: Main change - EurekaLog's core was rewritten (refactored) to allow more easy modification and remove hacks. 2)....Improved: New plugin-like architecture now allows you to exclude unused code. 3)....Improved: New plugin-like architecture now allows you to easily extends EurekaLog. 4)....Improved: Greatly extended documentation. 5)....Improved: Installer is now localized. 6)....Improved: Greatly speed ups creation of minimal bug
report
(with most information disabled). 7)....Changed: EurekaLog's root IDE menu was relocated to under Tools and extended with new items. 8)....Added: New examples. 9)....Added: New tools (address lookup,
error
lookup, threads snapshot, standalone sett
ing
s editor). 10)..Added: Support for DBG/PDB formats of debug information (includ
ing
symbol server support and auto-download
ing
). 11)..Added: Support for madExcept debug information (experimental). 12)..Added: WER (Windows
Error
Report
ing
) support. 13)..Added: Full unicode support. 14)..Added: Professional and Trial editions: added source code (interface sections only) 15)..Improved: Dialogs - new options and new customization possibilities: 16)..Added: All GUI dialogs: ability to test dialog directly from configuration dialog by display
ing
a sample window with currently specified sett
ing
s. 17)..Improved: All GUI dialogs: dialogs are DPI-awared now (auto-scale for different DPI). 18)..Added: MessageBox dialog: added detailed mode (shows a compact call stack). 19)..Added: MessageBox dialog: added ability for ask
ing
a send consent. 20)..Added: MessageBox dialog: added support to switch to "native" message box for
application
. 21)..Added: MS Classic dialog: added control over "user e-mail" edit's visibility. 22)..Added: MS Classic dialog: added ability to personalize dialog view with
application
's name and icon. 23)..Added: MS Classic dialog: added ability to show terminate/restart checkbox initially checked. 24)..Added: EurekaLog dialog: added ability to personalize dialog view with
application
's name and icon. 25)..Added: EurekaLog dialog: added ability to show terminate/restart checkbox initially checked. 26)..Added: EurekaLog dialog: added ability to switch back to non-detailed view. 27)..Added: WEB dialog: added new tags to customize bug
report
page. 28)..Improved: WEB dialog: improved support for unicode and charset. 29)..Added: New dialog type: RTL dialog. 30)..Added: New dialog type: console output. 31)..Added: New dialog type: system logg
ing
. 32)..Added: New dialog type: Windows
Error
Report
ing
. 33)..Improved: Send
ing
- new options and new customization possibilities: 34)..Added: All send methods: added ability to setup multiply send methods. 35)..Added: All send methods: added ability to change send method order. 36)..Added: All send methods: added separate sett
ing
s for each send method. 37)..Added: All send methods: ability to test send method directly from configuration dialog by send
ing
a demo bug
report
. 38)..Added: SMTP client send method: added SSL support. 39)..Added: SMTP client send method: added TLS support. 40)..Added: SMTP client send method: added option for us
ing
real e-mail address. 41)..Added: SMTP server send method: added option for us
ing
real e-mail address. 42)..Added: HTTP upload send method: added support for custom backward feedback messages. 43)..Added: FTP upload send method: added creat
ing
folders on FTP (like remote ForceDirectories). 44)..Added: Mantis send method: added API support (MantisConnect, out-of-the-box since Mantis 1.1.0, available as add-on for previous versions). 45)..Added: Mantis send method: added support for custom "Count" field. 46)..Added: Mantis send method: added options for controll
ing
duplicates. 47)..Added: Mantis send method: added support for SSL/TLS. 48)..Added: FogBugz send method: added API support (out-of-the-box since ForBugz 7, available as add-on for FogBugz 6). 49)..Added: FogBugz send method: EurekaLog will update "Occurrences" field (count of bugs). 50)..Added: FogBugz send method: EurekaLog will respect "Stop
report
ing
" option (BugzScout's sett
ing
). 51)..Added: FogBugz send method: EurekaLog will respect "Scout message" option (BugzScout's sett
ing
). 52)..Added: FogBugz send method: EurekaLog will store client's e-mail as issue's correspondent. 53)..Added: FogBugz send method: added options for controll
ing
duplicates. 54)..Added: FogBugz send method: added support for "Area" field. 55)..Added: FogBugz send method: added support for SSL/TLS. 56)..Added: BugZilla send method: added API support. 57)..Added: BugZilla send method: added support for custom "Count" field. 58)..Added: BugZilla send method: added options for controll
ing
duplicates. 59)..Added: BugZilla send method: added support for SSL/TLS. 60)..Added: New send method: Shell (mailto protocol). 61)..Added: New send method: extended MAPI. 62)..Added: Support for separate code and debug info injection. 63)..Added: Ability to use custom units before EurekaLog's units. 64)..Added: Support for external configuration file in IDE expert. 65)..Added: Now EurekaLog stores only those project options which are different from defaults (to save disk space and reduce noise in project file). 66)..Added: Now EurekaLog stores project options sorted (alphabet order). 67)..Added: Separate sett
ing
s for sav
ing
modules and processes lists to bug
report
. 68)..Added: Support for tak
ing
screenshots of multiply monitors. 69)..Added: More screenshot customization options. 70)..Added: More control over bug
report
's file names. 71)..Added: New environment variables. 72)..Added: Delet
ing
.map file after compilation. 73)..Added: Support for different .dpr and .dproj file names. 74)..Improved: memory leaks detection feature - new options and new customization possibilities: 75)..Added: Ability to track memory problems without activation of leaks check
ing
. 76)..Added: Support for shar
ing
memory manager. 77)..Added: Support for track
ing
leaks in
application
s built with run-time packages. 78)..Added: Option to zero-fill freed memory. 79)..Added: Option to enable leaks detection only when runn
ing
under debugger. 80)..Added: Option for manual activation control for leaks detection (via command-line switches). 81)..Added: Option to select stack trac
ing
method for memory problems. 82)..Added: Option to trigger memory leak
report
ing
only for large leaked memory's size. 83)..Added: Option to control limit of number of
report
ed leak. 84)..Added: CheckHeap function to force check of heap's consistency. 85)..Added: DumpAllocationsToFile function to save information about allocated memory to log file. 86)..Added: Registered leaks feature. 87)..Added: Run-time control over memory leak register
ing
. 88)..Added: New recognized leak type: Str
ing
(both ANSI and Unicode are supported). 89)..Added: Memory features support for C++ Builder. 90)..Added: Resource leaks detection feature. 91)..Improved: Compilation speed increased. 92)..Added: Support for generics in debug information. 93)..Added: Chained/nested exceptions support. 94)..Added: Wait Chain Traversal support. 95)..Added: Support for named threads. 96)..Added: Additional information for threads in call stack. 97)..Improved: EurekaLog Viewer Tool: 98)..Added: Now Viewer has its own help file 99)..Added: Viewer now supports a FireBird based database on local file or remote server. 100).Added: You can have more that one user account for FireBird based database. 101).Added: Viewer now can be launched in View mode (Viewer can be configured to any DB or View mode). 102).Added: Viewer's database now supports stor
ing
files, associated with the
report
(you can also add and remove files manually). 103).Added: Viewer supports "Import" and "View" commands for
report
files. 104).Improved: Extended support for more log formats (XML, packed ELF, etc). 105).Added: Columns in
report
's list now can be configured (you can hide and show them). 106).Added: There are a plenty of new columns added to
report
's list. 107).Added: Ability of auto-download
report
s from e-mail account. 108).Improved: print
ing
- now you can print the entire
report
(includ
ing
screenshots). Old behaviour of print
ing
just one tab (call stack only, for example) also remains. 109).Added: Viewer can now have more that one run-time instance . 110).Added: File import status dialog is now configurable (you can disable it, if you want to). 111).Added: There is a preview area for screenshots, available in
report
s. 112).Improved: Now Viewer is more Vista-friendly (i.e. file associations are managed in HKCU, rather that in HKLM, stor
ing
configuration in user's
Application
Data, etc, etc). 113).Added:
Report
's list now supports multi-select, so operations can be performed on many
report
s at time. 114).Added: There are plenty of new command line abilities, like specify
ing
several files and new switches. 115).Improved: Bunch of minor changes and improvements. WARN
ING
: -------- There are many changes in this release. See the "Changed from the old 6.x version" help topic for further information! EurekaLog 7 also have "EurekaLog 6 backward compatibility mode". Please, refer to help file for more information. We also have the detailed "Upgrade guide" in our help system.
VB基础类
7,763
社区成员
197,605
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章