You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Quite often, valuable crash logs are lost because the user just restarts the launcher when asked to post an infolog.
This could be mitigated by parsing the infolog.txt on launcher start, and prompting the user.
"The launcher has detected an engine crash report from a previous session, would you like to upload the infolog.txt?" [yes/no]
It would be nice to use the logs.springrts.com tag functionality to mark these logs as well.
The stacktrace translator has a good set of regular expressions [python] for identifying if there was a useable crash report:
`# Match common pre- and suffix on infolog lines. This also allows
"empty" prefixes followed by any amount of trailing whitespace.
the a-zA-Z class can be "Warning" or "Error"
RE_PREFIX = r'^(([t=([0-9:.])])?(?:[(?:f=)?\s-?\d+]\s*)?(?:[a-zA-Z]+:))\s*' # teifion says this is good for f=-00
RE_SUFFIX = r'(?:[\r\n]+$)?'
Match stackframe lines, captures the module name and the address.
RE_VERSION_LINES = [
x % (RE_PREFIX, RE_VERSION, RE_SUFFIX) for x in [
r'%sStacktrace for %s:%s',
r'%sStacktrace ([a-zA-Z0-9 ]+) for %s:%s',
## legacy version patterns
r'%s%s has crashed\.%s',
r'%s\[Watchdog\] Hang detection triggered for %s\.%s',
r'%sSegmentation fault \(SIGSEGV\) in %s%s',
r'%sAborted \(SIGABRT\) in %s%s',
r'%sError handler invoked for %s\.%s',
]
]`
The text was updated successfully, but these errors were encountered:
Quite often, valuable crash logs are lost because the user just restarts the launcher when asked to post an infolog.
This could be mitigated by parsing the infolog.txt on launcher start, and prompting the user.
"The launcher has detected an engine crash report from a previous session, would you like to upload the infolog.txt?" [yes/no]
It would be nice to use the logs.springrts.com tag functionality to mark these logs as well.
The stacktrace translator has a good set of regular expressions [python] for identifying if there was a useable crash report:
`# Match common pre- and suffix on infolog lines. This also allows
"empty" prefixes followed by any amount of trailing whitespace.
the a-zA-Z class can be "Warning" or "Error"
RE_PREFIX = r'^(([t=([0-9:.])])?(?:[(?:f=)?\s-?\d+]\s*)?(?:[a-zA-Z]+:))\s*' # teifion says this is good for f=-00
RE_SUFFIX = r'(?:[\r\n]+$)?'
Match stackframe lines, captures the module name and the address.
Example: '[0] (0) C:\Program Files\Spring\spring.exe [0x0080F268]'
-> ('C:\Program Files\Spring\spring.exe', '0x0080F268')
NOTE: does not match format of stackframe lines on Linux
#[t=00:02:04.492434][f=0000536] Error: (0) C:\Users\xxx\Documents\My Games\Spring\engine\spring_bar_{BAR}104.0.1-1695-gbd6b256_windows-64-minimal-portable\spring.exe [0x004DD130]
#Spring 104.0.1-1695-gbd6b256 BAR
RE_STACKFRAME = RE_PREFIX + r'(\d+)\s+(.(?:.exe|.dll))(?:([^)]))?\s+[(0x[\dA-Fa-f]+)]' + RE_SUFFIX
regex for RC12 versions: first two parts are
mandatory, last two form one optional group
RE_VERSION_NAME_PREFIX = "(?:[sS]pring)"
RE_VERSION_STRING_RC12 = "([0-9]+.[0-9]+[.0-9](?:-[0-9]+-g[0-9a-f]+)?)"
RE_VERSION_BRANCH_NAME = "([a-zA-Z0-9-]+)?"
RE_VERSION_BUILD_FLAGS = "?(?:\s((?:[a-zA-Z0-9-]+)))?"
RE_VERSION =
RE_VERSION_NAME_PREFIX + " ?" +
RE_VERSION_STRING_RC12 + " ?" +
RE_VERSION_BRANCH_NAME + " ?" +
RE_VERSION_BUILD_FLAGS
Match complete line containing version string.
NOTE:
these are highly sensitive to changes in format
strings passed to LOG(), perhaps define them in
a header and parse that?
RE_VERSION_LINES = [
x % (RE_PREFIX, RE_VERSION, RE_SUFFIX) for x in [
r'%sStacktrace for %s:%s',
r'%sStacktrace ([a-zA-Z0-9 ]+) for %s:%s',
]`
The text was updated successfully, but these errors were encountered: