__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
#!/usr/bin/python3 # Copyright (C) 2009 Canonical Ltd. # Author: Andy Whitcroft <[email protected]> # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2 of the License, or (at your # option) any later version. See http://www.gnu.org/copyleft/gpl.html for # the full text of the license. """Detect and report suspend/hibernate/resume failures. If a suspend/hibernate is marked as still in progress during a normal system boot we know that that operation has failed. Use that to generate an apport bug report. """ import datetime import os import sys from gettext import gettext as _ import apport.report from apport.hookutils import attach_file_if_exists from apport.packaging_impl import impl as packaging # pylint: disable-next=missing-function-docstring def main(argv: list[str] | None = None) -> int: if argv is None: argv = sys.argv try: if not packaging.enabled(): return -1 report = apport.report.Report(problem_type="KernelOops") libdir = "/var/lib/pm-utils" flagfile = f"{libdir}/status" stresslog = f"{libdir}/stress.log" hanglog = f"{libdir}/resume-hang.log" report.add_os_info() report.add_proc_info() report.add_user_info() report.add_package(apport.packaging.get_kernel_package()) # grab the contents of the suspend/resume flag file attach_file_if_exists(report, flagfile, "Failure") # grab the contents of the suspend/hibernate log file attach_file_if_exists(report, "/var/log/pm-suspend.log", "SleepLog") # grab the contents of the suspend/resume stress test log if present. attach_file_if_exists(report, stresslog, "StressLog") # Ensure we are appropriately tagged. if "Failure" in report: report.add_tags(["resume ", report["Failure"]]) # Record the failure mode. report["Failure"] += "/resume" # If we had a late hang pull in the resume-hang logfile. Also # add an additional tag so we can pick these out. if os.path.exists(hanglog): attach_file_if_exists(report, hanglog, "ResumeHangLog") report.add_tags(["resume-late-hang"]) # Generate a sensible report message. if report.get("Failure") == "suspend/resume": report["Annotation"] = _( "This occurred during a previous suspend," " and prevented the system from resuming properly." ) else: report["Annotation"] = _( "This occurred during a previous hibernation," " and prevented the system from resuming properly." ) # If we had a late hang make sure the dialog is clear that they may # not have noticed. Also update the bug title so we notice. if os.path.exists(hanglog): report["Annotation"] += " " + _( "The resume processing hung very near the end" " and will have appeared to have completed normally." ) report["Failure"] = "late resume" if report.check_ignored(): return 0 nowtime = datetime.datetime.now() pr_filename = f"/var/crash/susres.{str(nowtime).replace(' ', '_')}.crash" with os.fdopen( os.open(pr_filename, os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o640), "wb" ) as report_file: report.write(report_file) return 0 except Exception: print("apportcheckresume failed") raise if __name__ == "__main__": sys.exit(main())
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| general-hooks | Folder | 0755 |
|
|
| package-hooks | Folder | 0755 |
|
|
| symptoms | Folder | 0755 |
|
|
| testsuite | Folder | 0755 |
|
|
| apport | File | 43.83 KB | 0755 |
|
| apport-checkreports | File | 1.37 KB | 0755 |
|
| apport-gtk | File | 24.34 KB | 0755 |
|
| apport-gtk.ui | File | 27.69 KB | 0644 |
|
| apport.jar | File | 2.38 KB | 0644 |
|
| apportcheckresume | File | 3.67 KB | 0755 |
|
| dump_acpi_tables.py | File | 1.72 KB | 0755 |
|
| gcc_ice_hook | File | 1.21 KB | 0755 |
|
| is-enabled | File | 672 B | 0755 |
|
| iwlwifi_error_dump | File | 2.25 KB | 0755 |
|
| java_uncaught_exception | File | 2.59 KB | 0755 |
|
| kernel_crashdump | File | 3.06 KB | 0755 |
|
| kernel_oops | File | 1.25 KB | 0755 |
|
| package_hook | File | 2.86 KB | 0755 |
|
| recoverable_problem | File | 2.41 KB | 0755 |
|
| root_info_wrapper | File | 96 B | 0755 |
|
| unkillable_shutdown | File | 3.63 KB | 0755 |
|
| whoopsie-upload-all | File | 8.33 KB | 0755 |
|