Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

report: Ignore missing COREDUMP_FILENAME #318

Merged
merged 2 commits into from Apr 16, 2024

Conversation

bdrung
Copy link
Collaborator

@bdrung bdrung commented Apr 16, 2024

If a systemd-coredump report points to a coredump file that does not exist (any more), Apport will fail:

Traceback (most recent call last):
  File "/usr/share/apport/apport", line 1244, in <module>
    sys.exit(main(sys.argv[1:]))
             ^^^^^^^^^^^^^^^^^^
  File "/usr/share/apport/apport", line 761, in main
    return process_crash_from_systemd_coredump(options.systemd_coredump_instance)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/share/apport/apport", line 1240, in process_crash_from_systemd_coredump
    return process_crash(report, real_user, report_owner)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/share/apport/apport", line 1146, in process_crash
    info.write(reportfile)
  File "/usr/lib/python3/dist-packages/problem_report.py", line 548, in write
    self._write_binary_item_compressed_and_encoded(file, k)
  File "/usr/lib/python3/dist-packages/problem_report.py", line 722, in _write_binary_item_compressed_and_encoded
    self._write_binary_item_base64_encoded(
  File "/usr/lib/python3/dist-packages/problem_report.py", line 629, in _write_binary_item_base64_encoded
    for chunk in chunks:
  File "/usr/lib/python3/dist-packages/problem_report.py", line 649, in _generate_compressed_chunks
    yield from value.iter_compressed()
  File "/usr/lib/python3/dist-packages/problem_report.py", line 194, in iter_compressed
    with open(self.filename, "rb") as compressed_file:
         ^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/var/lib/systemd/coredump/core.tracker-extract.1000.92c6d53b71364e3286fd6011f3dad5e7.4441.1710845299000000.zst'

Ignore the missing coredump file and print a warning for it.

Bug: https://launchpad.net/bugs/2058380

@bdrung bdrung requested a review from schopin-pro April 16, 2024 14:57
Copy link

codecov bot commented Apr 16, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 82.29%. Comparing base (d4df718) to head (b44ae4f).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #318      +/-   ##
==========================================
+ Coverage   81.99%   82.29%   +0.30%     
==========================================
  Files          94       94              
  Lines       19268    19289      +21     
  Branches     3096     3105       +9     
==========================================
+ Hits        15798    15874      +76     
+ Misses       2962     2915      -47     
+ Partials      508      500       -8     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Open the file on initialization of `CompressedFile` to ensure that the
compressed file can be read to avoid failing later.

Signed-off-by: Benjamin Drung <benjamin.drung@canonical.com>
If a systemd-coredump report points to a coredump file that does not
exist (any more), Apport will fail:

```
Traceback (most recent call last):
  File "/usr/share/apport/apport", line 1244, in <module>
    sys.exit(main(sys.argv[1:]))
             ^^^^^^^^^^^^^^^^^^
  File "/usr/share/apport/apport", line 761, in main
    return process_crash_from_systemd_coredump(options.systemd_coredump_instance)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/share/apport/apport", line 1240, in process_crash_from_systemd_coredump
    return process_crash(report, real_user, report_owner)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/share/apport/apport", line 1146, in process_crash
    info.write(reportfile)
  File "/usr/lib/python3/dist-packages/problem_report.py", line 548, in write
    self._write_binary_item_compressed_and_encoded(file, k)
  File "/usr/lib/python3/dist-packages/problem_report.py", line 722, in _write_binary_item_compressed_and_encoded
    self._write_binary_item_base64_encoded(
  File "/usr/lib/python3/dist-packages/problem_report.py", line 629, in _write_binary_item_base64_encoded
    for chunk in chunks:
  File "/usr/lib/python3/dist-packages/problem_report.py", line 649, in _generate_compressed_chunks
    yield from value.iter_compressed()
  File "/usr/lib/python3/dist-packages/problem_report.py", line 194, in iter_compressed
    with open(self.filename, "rb") as compressed_file:
         ^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/var/lib/systemd/coredump/core.tracker-extract.1000.92c6d53b71364e3286fd6011f3dad5e7.4441.1710845299000000.zst'
```

Ignore the missing coredump file and print a warning for it.

Bug: https://launchpad.net/bugs/2058380
Signed-off-by: Benjamin Drung <benjamin.drung@canonical.com>
@schopin-pro schopin-pro merged commit 7e5a246 into canonical:main Apr 16, 2024
21 checks passed
@bdrung bdrung deleted the fix-2058380 branch April 16, 2024 16:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants