|
|
|
@ -46,13 +46,10 @@ def get_apport_stacktrace(fn): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_tombstones(): |
|
|
|
|
"""Returns list of (filename, ctime) for all tombstones in /data/tombstones |
|
|
|
|
and apport crashlogs in /var/crash""" |
|
|
|
|
"""Returns list of (filename, ctime) for all crashlogs""" |
|
|
|
|
files = [] |
|
|
|
|
for folder in [TOMBSTONE_DIR, APPORT_DIR]: |
|
|
|
|
if os.path.exists(folder): |
|
|
|
|
with os.scandir(folder) as d: |
|
|
|
|
|
|
|
|
|
if os.path.exists(APPORT_DIR): |
|
|
|
|
with os.scandir(APPORT_DIR) as d: |
|
|
|
|
# Loop over first 1000 directory entries |
|
|
|
|
for _, f in zip(range(1000), d, strict=False): |
|
|
|
|
if f.name.startswith("tombstone"): |
|
|
|
@ -143,7 +140,7 @@ def report_tombstone_apport(fn): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main() -> NoReturn: |
|
|
|
|
sentry.init(sentry.SentryProject.SELFDRIVE_NATIVE) |
|
|
|
|
should_report = sentry.init(sentry.SentryProject.SELFDRIVE_NATIVE) |
|
|
|
|
|
|
|
|
|
# Clear apport folder on start, otherwise duplicate crashes won't register |
|
|
|
|
clear_apport_folder() |
|
|
|
@ -153,6 +150,14 @@ def main() -> NoReturn: |
|
|
|
|
now_tombstones = set(get_tombstones()) |
|
|
|
|
|
|
|
|
|
for fn, _ in (now_tombstones - initial_tombstones): |
|
|
|
|
# clear logs if we're not interested in them |
|
|
|
|
if not should_report: |
|
|
|
|
try: |
|
|
|
|
os.remove(fn) |
|
|
|
|
except Exception: |
|
|
|
|
pass |
|
|
|
|
continue |
|
|
|
|
|
|
|
|
|
try: |
|
|
|
|
cloudlog.info(f"reporting new tombstone {fn}") |
|
|
|
|
if fn.endswith(".crash"): |
|
|
|
|