X4:CrashReport Dump: Difference between revisions

From Egosoft Wiki
m (Protected "X4:CrashReport Dump" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
mNo edit summary
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{DISPLAYTITLE:Crash Reports and Crash Dumps)}}
{{DISPLAYTITLE:<translate><!--T:1--> Crash Reports and Crash Dumps</translate>}}
__TOC__
<languages/>
<translate>
=== Introduction === <!--T:2-->
When a game (or other application) crashes, it can be difficult to work out what has caused the crash. There are many different reasons for a program to crash. These can include:
* a bug in the game/application itself (e.g. trying to use an invalid memory address, failing to handle an exception which occurred, running into undefined behaviour which ends up trying to allocate too many resources such as memory, etc.)
* a bug in a third-party program/tool, which is either used by the game or hooks itself into the game, to perform its own functionality (such as improving graphical effects or recording the video/audio in order to be able to stream it)
* hardware failures causing undefined behaviour in the application or the operating system (OS)
* countless other possibilities


=== Introduction ===
<!--T:3-->
When a game (or application) crashes, the developers usually have a hard time trying to figure out what caused the crash. There are dozens of different reasons for a program to crash. It can be a bug in the game/application itself (f.e. trying to dereference an invalid memory address, failing to handle an exception which occurred, running into undefined behavior which ultimately ends up in trying to allocate too many resources (like memory), etc.), a bug in a 3rd-party program/tool which is either used by the game or hooks itself into the game to perform its own functionality (like improving graphical effects or recording the video/audio to be able to stream it), hardware failures causing undefined behavior in the application or on the OS layer, and countless of other possibilities.
The outcome for the player, however, is always the same; the game/application crashes and they end up back on the Desktop.


The outcome for the player however, is always the same: The game/application just crashed and the user ended up on the Desktop.
<!--T:4-->
So, while all crashes may appear the same to the player, they may actually be completely different things from a developer's point of view. The problem for the developer is to figure out what the cause of a crash is.


So while all crashes basically appear the same way to the player, they are actually completely different things from a developer's point of view. The problem for the developer is to figure out what the cause of a crash was, while the users can't tell them apart from their side.
<!--T:5-->
One way to approach this, is to collect relevant application details from when the crash occurred. These are contained in packages called '''crash dumps'''.


One way to handle this, is to collect relevant application details, when the crash occurred. These packages are called '''crash dumps'''.
<!--T:6-->
These crash dumps contain useful information (such as what part of the code was running when it crashed - known as the callstack, what was in memory, the other code modules - known as DLLs - running on the computer, basic information about the OS and the computer/environment, etc.). This is a good starting point for the developer to help them distinguish between different types of crashes, and can often be a good hint towards identifying (and possibly fixing) the cause of the crash.


The dumps contain useful information (like most recent callstack and stack memory information, the modules (aka: DLLs) running on the machine, some basic information about the OS and the machine/environment the crash occurred on, etc.). This is a good start for the developer to tell different crashes apart and usually by itself is good enough a hint to identify (and if possible fix) the cause of the crash.
=== Crash dumps in X4: Foundations and redirect pages === <!--T:7-->
In X4: Foundations, we normally generate so-called "mini-dumps" instead of full crash dumps. Mini-dumps only contain the essential information about a crash, such as the callstack. They do not contain a full dump of the memory used by the game. By default, when a crash occurs, information about the exact location in the game code where the crash occurred is sent to a server. The server looks up the details and checks if the crash is already known, and whether troubleshooting pages containing additional details are available. If so, the browser will open the corresponding troubleshooting page, which will give further information about the crash, such as available workarounds, updates on the status of the crash investigation, step-by-step-instructions for the user to resolve the issue (if it's an issue outside the game such as a driver installation issue on the local machine), and so on.


=== Crash dumps in X4 Foundations and redirect pages ===
<!--T:8-->
In X4 Foundations we generally generate so called mini dumps instead of full dumps. Mini dumps only contain the essential information about a crash and only the stack data. They do not contain a full memory dump of the heap the game uses. By default when a crash occurs information about the exact location in the engine the crash occurred in is sent to a server. The server looks up the details and checks if the crash is already known and whether additional details (the troubleshooting pages) are available. If so, the browser will open the corresponding troubleshooting page pointing out further information about the crash (like potentially identified workarounds, status updates on the state of the crash investigation, step-by-step-instructions for the user to resolve the issue itself (if it's an issue outside the game like a driver installation issue on the local machine), etc.).
In addition to that, the crash dump and some other related information (such as the memory consumption of the game at the time the crash occurred, the list of installed and active mods, the last few errors in the log, etc.) are uploaded to the server so that it is available to developers investigating the cause of the crash.


In addition to that, the crash dump and some other related information (like the memory consumption of the game at the time the crash occurred, the list of installed and active mods, the last few errors in the log, etc.) are uploaded to the server so it's available for the developers to investigate the cause of the crash in detail.
<!--T:9-->
If you don't want crash details to be uploaded to the server, you can opt out of this functionality in-game via the '''Options Menu -> Settings -> Privacy Settings''' and set '''Send crash reports''' to '''NO'''.


If you don't want the crash details to be uploaded to the server at all, you can opt out of this functionality in game through the '''Options Menu -> Settings -> Privacy Settings''' and set '''Send crash reports''' to '''NO'''.
<!--T:10-->
[[File:CrashReport1.png|500px]]


TODO Image goes here
<!--T:11-->
Please be aware that if this option is disabled, you also won't be redirected to the troubleshooting pages.


Please be aware that if this is disabled, you also won't be redirected to the troubleshooting pages anymore.
=== Privacy Policy and crash reports === <!--T:12-->
We do not intentionally include any personal details when crash reports are sent to us. We cannot guarantee that crash reports won't include any personal information at all (e.g. if it ends up on the callstack data which is part of the crashdump), but the chances of this happening are very small. Note that the game encrypts personalised data that it uses itself, such as a username entered for the online "Venture" feature, so this would never appear in plain text in the crash report.


=== Privacy Policy and crash reports ===
<!--T:13-->
We do not intentionally include any personal details by default when crash reports are sent to us. While it cannot be ruled out entirely that crash details don't include any personal information (f.e. if it ends up on the stack data which is part of the crashdump), chances of this happening are very slim (as the game usually stores personalized data (for the online functionality) only in encrypted ways and hence they also would be encrypted, if they happen to end up on the sent stack data).
This does mean, however, that we won't be able to tell which individual player ran into which particular crash based on the records we have on the servers.


That however also means that we won't be able to tell which user ran into a particular crash we have on record on the servers.
<!--T:14-->
In certain cases this could be problematic, for example if we need to get in touch with affected players to further troubleshoot a crash. In such cases, we might ask individual users who contacted us about a crash to enable personalised crash reports. With this setting enabled ('''Options Menu -> Settings -> Privacy Settings -> Personalised crash reports'''), a unique identifier is assigned to all crash reports coming from each user, which allows us to identify that user's crash reports on our server.


In certain cases this can be problematic, if we need to get in touch to further troubleshoot a crash with affected users. If such a case happens, we might ask individual users who contacted us about a crash to enable personalized crash reports. If this setting is enabled ('''Options Menu -> Settings -> Privacy Settings -> Personalised crash reports'''), it assigns a unique identifier to crash reports coming from this user which allows us to identify this user's crash reports on our server.
<!--T:15-->
Please be aware that enabling this setting is really only useful if you've been asked to do so by our support team. Enabling it yourself, without investigation of a particular crash being in progress, does not provide us with useful additional data. Also note that, although the identifier is personalised, we do not have the means to identify a user directly using the identifier alone.


Be aware that enabling this setting is really just useful, if you've been asked by support to do so. Enabling it yourself without an investigation of a particular crash being in progress, the added data is of little use to us. Also be aware that while the identifier is personalized, we do not have means to identify the user directly just through the identifier alone.
=== Locating local crash reports === <!--T:16-->
 
Regardless of whether you opted to send crash reports automatically to the server, a copy of the crash dump is also stored locally on your computer. The game stores the dump file in the same location as the game executable (X4.exe), and names the files using the following format:
=== Locating local crash reports ===
Regardless of whether you selected to send crash reports automatically to the server or not, the crash dump is also stored locally on your machine. The game stores the dump file alongside the location of the game executable (X4.exe) and names the files in the following format:
'''X4_[VERSIONNUMBER]_[TIMESTAMP].dmp'''
'''X4_[VERSIONNUMBER]_[TIMESTAMP].dmp'''
''(Sidenote: Before 3.20 the name contained an 'r' after X4_ - as of 3.20 the filename was changed and the 'r' was dropped.)''


For instance, for a crash happening with version 3.10 of the game at 15:10:20 on 2020-03-23, the corresponding dump file the game creates would be: '''X4_310_2020_03_23_15_10_20.dmp'''.
<!--T:17-->
For example, for a crash happening in version 5.10 of the game, at 15:10:20 on 2022-03-23, the corresponding dump file created by the game would be called '''X4_510_2022_03_23_15_10_20.dmp'''.


Local crash files have primarily the purpose for the support team to be able to ask users for these files, if they are investigating a particular crash and the user was not redirected to a corresponding troubleshooting page or if he was redirected to the page, but the crash dump details would be of additional use to the developers, regardless.
<!--T:18-->
The primary purpose of these local crash dump files is to enable the support team to request them while investigating a particular crash, either because the user was not redirected to a corresponding troubleshooting page, or simply because the crash dump might contain further information that might be useful to the investigation.


Locating the particular path the crash dump file is located is quite easy.
<!--T:19-->
To find the location of the crash dump file:


==== Steam ====
==== Steam ==== <!--T:20-->
# In Steam go to LIBRARY (1), right click X4: Foundations (2) and click on Properties... (3)
# In Steam, go to LIBRARY (1), right click X4: Foundations (2) and click on Properties... (3)
#: TODO Image goes here
#; [[File:CrashReport2.png|300px]]
# In the "X4: Foundations - Properties" window click on LOCAL FILES (1) and then on BROWSE LOCAL FILES... (2)
# In the "X4: Foundations - Properties" window click on LOCAL FILES (1) and then on BROWSE LOCAL FILES... (2)
#: TODO Image goes here
#; [[File:CrashReport3.png|300px]]
This should bring up the Windows Explorer window in the folder where the X4.exe (and the dump files) reside.
This should bring up a Windows Explorer window, showing the folder where the X4.exe and the dump files are located.


==== GOG ====
==== GOG ==== <!--T:21-->
In the GOG Galaxy client select X4: Foundations (1), click on MORE (2), select Manage installation (3), and finally click on Show folder (4).
In the GOG Galaxy client, select X4: Foundations (1), click on MORE (2), select Manage installation (3), and finally click on Show folder (4).


TODO Image goes here
<!--T:22-->
[[File:CrashReport4.png|500px]]


This should bring up the Windows Explorer window in the folder where the X4.exe (and the dump files) reside.
<!--T:23-->
This should bring up a Windows Explorer window, showing the folder where the X4.exe and the dump files are located.
</translate>

Latest revision as of 00:40, 1 October 2022

Other languages:
  • English

Introduction

When a game (or other application) crashes, it can be difficult to work out what has caused the crash. There are many different reasons for a program to crash. These can include:

  • a bug in the game/application itself (e.g. trying to use an invalid memory address, failing to handle an exception which occurred, running into undefined behaviour which ends up trying to allocate too many resources such as memory, etc.)
  • a bug in a third-party program/tool, which is either used by the game or hooks itself into the game, to perform its own functionality (such as improving graphical effects or recording the video/audio in order to be able to stream it)
  • hardware failures causing undefined behaviour in the application or the operating system (OS)
  • countless other possibilities

The outcome for the player, however, is always the same; the game/application crashes and they end up back on the Desktop.

So, while all crashes may appear the same to the player, they may actually be completely different things from a developer's point of view. The problem for the developer is to figure out what the cause of a crash is.

One way to approach this, is to collect relevant application details from when the crash occurred. These are contained in packages called crash dumps.

These crash dumps contain useful information (such as what part of the code was running when it crashed - known as the callstack, what was in memory, the other code modules - known as DLLs - running on the computer, basic information about the OS and the computer/environment, etc.). This is a good starting point for the developer to help them distinguish between different types of crashes, and can often be a good hint towards identifying (and possibly fixing) the cause of the crash.

Crash dumps in X4: Foundations and redirect pages

In X4: Foundations, we normally generate so-called "mini-dumps" instead of full crash dumps. Mini-dumps only contain the essential information about a crash, such as the callstack. They do not contain a full dump of the memory used by the game. By default, when a crash occurs, information about the exact location in the game code where the crash occurred is sent to a server. The server looks up the details and checks if the crash is already known, and whether troubleshooting pages containing additional details are available. If so, the browser will open the corresponding troubleshooting page, which will give further information about the crash, such as available workarounds, updates on the status of the crash investigation, step-by-step-instructions for the user to resolve the issue (if it's an issue outside the game such as a driver installation issue on the local machine), and so on.

In addition to that, the crash dump and some other related information (such as the memory consumption of the game at the time the crash occurred, the list of installed and active mods, the last few errors in the log, etc.) are uploaded to the server so that it is available to developers investigating the cause of the crash.

If you don't want crash details to be uploaded to the server, you can opt out of this functionality in-game via the Options Menu -> Settings -> Privacy Settings and set Send crash reports to NO.

CrashReport1.png

Please be aware that if this option is disabled, you also won't be redirected to the troubleshooting pages.

Privacy Policy and crash reports

We do not intentionally include any personal details when crash reports are sent to us. We cannot guarantee that crash reports won't include any personal information at all (e.g. if it ends up on the callstack data which is part of the crashdump), but the chances of this happening are very small. Note that the game encrypts personalised data that it uses itself, such as a username entered for the online "Venture" feature, so this would never appear in plain text in the crash report.

This does mean, however, that we won't be able to tell which individual player ran into which particular crash based on the records we have on the servers.

In certain cases this could be problematic, for example if we need to get in touch with affected players to further troubleshoot a crash. In such cases, we might ask individual users who contacted us about a crash to enable personalised crash reports. With this setting enabled (Options Menu -> Settings -> Privacy Settings -> Personalised crash reports), a unique identifier is assigned to all crash reports coming from each user, which allows us to identify that user's crash reports on our server.

Please be aware that enabling this setting is really only useful if you've been asked to do so by our support team. Enabling it yourself, without investigation of a particular crash being in progress, does not provide us with useful additional data. Also note that, although the identifier is personalised, we do not have the means to identify a user directly using the identifier alone.

Locating local crash reports

Regardless of whether you opted to send crash reports automatically to the server, a copy of the crash dump is also stored locally on your computer. The game stores the dump file in the same location as the game executable (X4.exe), and names the files using the following format: X4_[VERSIONNUMBER]_[TIMESTAMP].dmp

For example, for a crash happening in version 5.10 of the game, at 15:10:20 on 2022-03-23, the corresponding dump file created by the game would be called X4_510_2022_03_23_15_10_20.dmp.

The primary purpose of these local crash dump files is to enable the support team to request them while investigating a particular crash, either because the user was not redirected to a corresponding troubleshooting page, or simply because the crash dump might contain further information that might be useful to the investigation.

To find the location of the crash dump file:

Steam

  1. In Steam, go to LIBRARY (1), right click X4: Foundations (2) and click on Properties... (3)
    CrashReport2.png
  2. In the "X4: Foundations - Properties" window click on LOCAL FILES (1) and then on BROWSE LOCAL FILES... (2)
    CrashReport3.png

This should bring up a Windows Explorer window, showing the folder where the X4.exe and the dump files are located.

GOG

In the GOG Galaxy client, select X4: Foundations (1), click on MORE (2), select Manage installation (3), and finally click on Show folder (4).

CrashReport4.png

This should bring up a Windows Explorer window, showing the folder where the X4.exe and the dump files are located.