Root > Solving bugs in your code > Bug reports > General section

General section

Previous pageReturn to chapter overviewNext page   

Any EurekaLog's bug report contain the general section which holds single-valued information:

 

Exception:

-----------------------------

 2.2 Address: 005CBFB4

 2.5 Type   : Exception

 2.6 Message: Error Message.

 2.7 ID     : 8F800000

 2.11 Sent  : 0

 

User:

----------------------------------

 3.2 Name : Alex

 3.3 Email: sample@example.com

 

Steps to reproduce:

------------

 8.1 Text: I clicked on "Crash" button

 

Example of a short General section

 

Exactly which information will be included into bug report is configured in options. Exception's address, type, message and BugID (2.2, 2.5, 2.6, and 2.7) are mandatory pieces in any EurekaLog's bug report and can not be removed. Any other information can be enabled or disabled:

 

Application:

-------------------------------------------------------

 1.1 Start Date      : Sat, 17 Aug 2013 19:15:47 +0400

 1.2 Name/Description: Project10.exe

 1.3 Version Number  : 1.0.1.15

 1.4 Parameters      : /TestCrash

 1.5 Compilation Date: Sat, 17 Aug 2013 19:15:30 +0400

 1.6 Up Time         : 2 second(s)

 1.7 Elevated        : 0

 1.8 Integrity       : Medium

 1.9 Allocated       : 684972 (668.92 Kb)

 1.10 RAM            : 29548544 (28.18 Mb); Max: 30154752 (28.76 Mb)

 1.11 Private        : 13914112 (13.27 Mb); Max: 16289792 (15.54 Mb)

 1.12 Virtual        : 225898496 (215.43 Mb)

 

Exception:

-----------------------------------------------------

 2.1 Date          : Sat, 17 Aug 2013 19:15:50 +0400

 2.2 Address       : 00000000007F0D43

 2.3 Module Name   : Project10.exe

 2.4 Module Version: 1.0.1.15

 2.5 Type          : ETestException

 2.6 Message       : This is a test exception.

 2.7 ID            : 68260000

 2.8 Count         : 1

 2.9 Status        : New

 2.10 Note         :

 2.11 Sent         : 0

 

User:

-------------------------------------------------------

 3.1 ID        : Alex

 3.2 Name      : Alexander

 3.3 Email     : sample@example.com

 3.4 Company   : Neos Eureka S.r.l.

 3.5 Privileges: SeShutdownPrivilege             - OFF

                 SeChangeNotifyPrivilege         - ON

                 SeUndockPrivilege               - OFF

                 SeIncreaseWorkingSetPrivilege   - OFF

                 SeTimeZonePrivilege             - OFF

 3.6 Admin     : limited

 3.7 Restricted: 0

 

Active Controls:

----------------------------

 4.1 Form Class   : TForm9

 4.2 Form Text    : Form9

 4.3 Control Class: TButton

 4.4 Control Text : Button7

 

Computer:

------------------------------------------------------------------------------------

 5.1 Name            : TEST-PC

 5.2 Total Memory    : 4293558272 (4.00 Gb)

 5.3 Free Memory     : 1398812672 (1.30 Gb)

 5.4 Total Disk      : 274875805696 (256.00 Gb)

 5.5 Free Disk       : 128265609216 (119.46 Gb)

 5.6 System Up Time  : 8 hour(s), 1 minute(s), 7 second(s) / 12 day(s), 8 hour(s), 43 minute(s), 57 second(s)

 5.7 Processor       : Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz

 5.8 Display Mode    : 1827 x 1000, 32 bit

 5.9 Display DPI     : 96

 5.10 Video Card     : VirtualBox Graphics Adapter (driver 4.2.14.0 - RAM 67108864)

 5.11 Printer        : Microsoft XPS Document Writer (driver 6.0.6002.18005)

 5.12 Virtual Machine: VirtualBox

 

Operating System:

------------------------------------------------

 6.1 Type                : Microsoft Windows 10 (64 bit)

 6.2 Build #             : 1909 (10.0.18362.720)

 6.3 Update              : May 2019 Update [19H1] #720

 6.4 Non-Unicode Language: Russian (0419)

 6.5 Charset/ACP         : 204/1251

 6.6 Install Language    : Russian (0419)

 6.7 UI Language         : Russian (0419)

 6.8 Edition             : Ultimate

 6.9 UAC                 : 1

 

Network:

---------------------------------

 7.1 IP Address: 192.168.001.243

 7.2 Submask   : 255.255.255.000

 7.3 Gateway   : 192.168.001.001

 7.4 DNS 1     : 192.168.001.001

 7.5 DNS 2     : 000.000.000.000

 7.6 DHCP      : ON            

 

Steps to reproduce:

------------

 8.1 Text: I clicked on "Crash" button

 

Example of a large General section

 

Usually, information in general section is used to identify application, crashed module, error (type/message), and user. It also contains bunch of run-time information (such as hardware info, OS info, etc.). Run-time information (along with modules and processes) serves as auxiliary information when analyzing call stack and assembler/CPU dump.

 

All captions can be localized in options. Values are identified by numbers (like 1.1, 1.2, ...8.1). Values are non-localizable. All values are gathered through OS's information functions and appears "as is" in bug reports.

 

All date-time values are shown in local time zone. There is time-zone shift attached to each date-time value ("+0400" in the example above - which reads as "+4 hours 00 minutes from GMT/UTC, i.e. subtract 4 hours to get UTC time").

 

Memory and disk values are shown in precise and compact form. Precise form is used for machine or when you need exact value. Compact form is used as more human-readable - to get estimate quickly.

 

Application block displays information about application - that is .exe file. If your project is a DLL - then this block will show information about host process, not about your DLL.

Start Date value shows when application was launched. This values is saved on application's startup and is inserted into bug reports unmodified;
Name/Description value shows .exe's file name (without path) and description extracted from version information (if available). "File description" field is used as source for description. Full path can be obtained from Modules section of bug report;
Version Number value shows .exe's version information (if available). dwFileVersion field from VS_FIXEDFILEINFO structure is used as source;
Parameters value shows any command-line arguments passed to application (without exe file itself). This value comes from GetCommandLine function;
Compilation Date value shows date/time when application was compiled. This information is stored inside executable when it's compiled;
Up Time value shows how long application is running. This is delta between Start Date value and current time. This value is not stored anywhere, it is calculated when bug report is created;
Elevated can be 1 or 0. It indicates if token for your process has elevation status. This usually happens when you run your process elevated through UAC;
Integrity shows integrity level of the process token. For known integrity levels it will be a textual description. For custom/unknown levels - a number;
Allocated is amount of memory allocated via GetMem. Basically, this is AllocMemSize global variable. In other words, this is "memory allocated by Delphi code";
RAM indicates amount of RAM memory used by application. This is what Task Manager reports as "Memory" for your application. This is not a memory allocated by any code in your application;
Private is PrivateUsage from PROCESS_MEMORY_COUNTERS_EX. This is the total amount of memory that the memory manager has committed for a running process. In other words, this is "memory allocated by all code in app";
Virtual is a total amount of address space occupied by application. This includes memory-mapped images of DLLs.

 

Note: EurekaLog duplicates "Compilation Date" value inside its information block injected inside executable. Thus, you will get exact and correct compilation time value even if exe header was modified. Please note that some compilers (including old Borland compilers) fails to setup a proper compilation time in PE headers. This means that you may get strange values from non-EurekaLog enabled files (for example, when running your DLL inside non-EurekaLog host).

 

Exception block contains information about raised exception. This block will contain dummy values for hangs and leaks.

Date value shows exact moment when exception (or leak, or hang) was detected;
Address value shows address of machine instruction which raised the exception. Note that this is logical exception address, see CPU section for description;
Module Name shows file name and description for module to which Address value belongs. This value is formed by the same rules as Name/Description value from Application block (see above), but it's gathered from a module which raised exception - which may be or may be not a main exe file;
Module Version value is the same as Version Number value from Application block, but it is taken from exception module;
Type value is class name of exception object;
Message value is error message - that is a value of Message property from exception object;
ID value shows Bug ID. Bug ID is a hash which unique identifies exception/leak/hang;
Count value shows how many times this exception was raised. Typically this value is 1, but it can be more if this exception was raised multiple times before bug report was sent. Please note that this value is not affected by other exceptions raised before this one (that is exceptions with other Bug IDs);
Status value indicate bug tracker's status of the exception. This is obsolete value which exists for backward-compatibility reasons. Older versions of EurekaLog used plain text files as bug database, and this field was used as "New/Opened/Resolved" column;
Note value is the same as Status value - it's obsolete. It was used to hold arbitrary remarks about exception in plain-text database;
Sent value indicate if this report was sent to developers or not. 0 indicate that report was not sent.

 

User block contains information about user account running application:

ID value shows current user account name. This value comes from GetUserName function;
Name value shows full user name (if possible). This value is gathered from multiple sources in the registry;
Email value shows e-mail of the user. This value is supplied by MS Classic error dialog;
Company value shows "Registered Company" value gathered from the registry;
Privileges value shows account privileges of running process;
Admin can be 1, 0 or "limited". Values 1 and "limited" means current user belongs to built-in "administrators" group. Value of "limited" means that admin is not elevated (in other words, running as normal user);
Restricted can be 1 or 0. It indicates if token for process was restricted by disabling SIDs. This is not the same as unelevated account. Restricted tokens are used in special cases when there is need to limit access to securable objects. Windows services can use this feature to perform certain actions without compromising application running under local system account.

 

Active Controls block shows information about keyboard focus in GUI applications:

Form Class value shows window class of foreground window. Foreground window is determined by calling GetForegroundWindow function;
Form Text value shows caption of foreground window;
Control Class value shows window class of focused control. Focused control is determined by calling GetFocus function;
Control Text value shows caption/text of focused control.

 

Computer block shows hardware information. Values in this block are self-explanatory.

Up time consists of two values:
oFirst value is time of oldest running process. Typically this indicates how long your user profile was logged in. This will be value for system startup for administrators.
oSecond value is a value from GetTickCount function (same as value shown in Task Manager, systeminfo, NtQuerySystemInformation(SystemTimeOfDayInformation, Win32_OperatingSystem.LastBootUpTime, and performance counters). Important: This value may be different from what you might expect. For example, even if you turn off your Windows 10 PC each day - this value may show (for example) 12 days. That is because Windows 10 uses hybrid shutdown (fast startup), which means that Windows 10 rarely completely shutdowns.
Display mode contains resolution only for single monitor systems, or a list of displays with resolution and positions for multi-monitor systems
Virtual Machine value is filled only when application is running outside of the debugger. That's because probing for virtual machines requires application to try to execute invalid instructions which will raise exceptions (such as "Invalid Instruction" or "Privileged instruction") when application is run on real hardware. So, virtual machine checks are disabled when application is debugged to reduce annoying from raised probing exceptions.
oAdditionally, a "(manifest virtualized)" value can be added. This value means that return value of GetVersionEx function is different from actual (real) OS version. This means that your manifest does not contain compatibility mark for current OS, so Windows virtualizes it. This value can also be used when application is running with compatibility mode enabled;
oFinally, a "(code is instrumented)" value can also be added. This value means that some external entity (such as debugger, profiler, etc.) has altered code of application. EurekaLog may not be able to perform properly.

 

Operating System block shows OS information:

Type value shows human-readable name of OS. This value can only show OS known to EurekaLog when application was compiled. This field will show a generic "Windows 8.7" (this is just an example) for any unknown OS version;
Build value shows OS build. This value comes from dwBuildNumber field of GetVersionEx function;
Update value shows installed service pack. This value comes from wServicePack field of GetVersionEx function;
Non-Unicode Language value shows string representation of GetSystemDefaultLangID function. This value is known as "Language for non-Unicode programs" for the user;
Charset/ACP value shows default user locale charset and ANSI code page. These are value of ciCharset and ciACP fields of CharsetInfo structure which is obtained through GetLocaleInfo function for default code page (LOCALE_IDEFAULTANSICODEPAGE) of LOCALE_USER_DEFAULT locale. ciACP field matches GetACP function.
Install language value shows string representation of GetSystemDefaultUILanguage function. This value is known as "Install Language" for the system;
UI language value shows string representation of GetUserDefaultUILanguage function. This value is known as "UI Language" for the user;
Edition indicate edition of OS;
UAC can be 1 or 0. It indicates if UAC is enabled.

 

Note: Microsoft can return false information for backward compatibility reasons. For example, new versions of OS may report themselves as sub-versions of previous OS version. Or it may report service pack 2 being installed when there was no SP released at all (SP 2 is a most popular SP for Windows XP). Application Compatibility layer of OS may also affect these values.

 

Network block shows network information. Values in this block are self-explanatory. Each network adapter will produce a vertical section of values.

 

Steps to reproduce block shows feedback text from user:

Text value is supplied by MS Classic or EurekaLog error dialogs. Usually this is "steps to reproduce" text - that is a textual description entered by end user which explains what user was doing when error occurred.

 

Custom information block shows information supplied by your code via OnCustomDataRequest event handler. Please note that you still have to enable custom information in bug report content options.

 

 

See also:




Send feedback... Build date: 2023-09-11
Last edited: 2023-08-09
PRIVACY STATEMENT
The documentation team uses the feedback submitted to improve the EurekaLog documentation. We do not use your e-mail address for any other purpose. We will remove your e-mail address from our system after the issue you are reporting has been resolved. While we are working to resolve this issue, we may send you an e-mail message to request more information about your feedback. After the issues have been addressed, we may send you an email message to let you know that your feedback has been addressed.


Permanent link to this article: https://www.eurekalog.com/help/eurekalog/bug_report_general.php