summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibCoreDump
AgeCommit message (Collapse)Author
2021-08-08LibCoreDump: Make narrowing `uint64_t` => `FlatPtr` conversion explicitDaniel Bertalan
This fixes a build issue on Clang which returns an error if narrowing is performed in a list-initialization.
2021-08-06LibDebug+Everywhere: Make DebugInfo not own the ELF imageAli Mohammad Pur
This is required to avoid copying the image where otherwise a reference would be enough.
2021-07-27LibCoreDump: Make symbolication work when .text isn't the first segmentGunnar Beutner
This can happen with binaries built with Clang or with a custom linker script.
2021-07-13LibDebug: Implement symbolication for x86_64Gunnar Beutner
2021-06-30LibCoreDump: Change Backtrace debug info cache to member variableMax Wipfli
This changes the previously static s_debug_info_cache to a member variable. This is required so the cache is not kept alive if the Backtrace object is destroyed. Previously, the cache object would keep alive MappedFile objects and other data, resulting in CrashReporter and CrashDaemon using more than 100 MB of memory even after the Backtrace objects have been destroyed (and the data is thus no longer needed). This was especially the case when handling crashes from Browser (due to libweb.so and libjs.so). Due to this change, object_info_for_region has been promoted to a instance method. It has also been cleaned up somewhat.
2021-06-30AK+Everywhere: Add and use static APIs for LexicalPathMax Wipfli
The LexicalPath instance methods dirname(), basename(), title() and extension() will be changed to return StringView const& in a further commit. Due to this, users creating temporary LexicalPath objects just to call one of those getters will recieve a StringView const& pointing to a possible freed buffer. To avoid this, static methods for those APIs have been added, which will return a String by value to avoid those problems. All cases where temporary LexicalPath objects have been used as described above haven been changed to use the static APIs.
2021-06-29Kernel+LibCoreDump: Implement more x86_64 coredump functionalityGunnar Beutner
2021-06-24Userland: Add more TODO()s for arch-specific codeGunnar Beutner
This enables building more of the userspace applications for x86_64.
2021-06-20LibCoreDump: Don't subtract one from the first stack frame's EIPGunnar Beutner
The first stack frame represents the current instruction pointer rather than the return address so we shouldn't subtract one from it. Fixes #8162.
2021-06-19LibCoreDump: Include source locations of inlined functions in backtraceItamar
2021-06-19LibCoreDump: Use "eip - 1" when creating backtrace entriesItamar
We need to do this because the return address from a function frame is the instruction that comes after the 'call' instruction.
2021-06-19LibDebug: Store LibDebug objects on the heap & make them non-copyableItamar
This fixes an issue were some LibDebug objects (for example, Dwarf::CompilationUnit) held a reference to their parent Dwarf::DwarfInfo object, which was constructed on the stack and later moved to the heap.
2021-04-22Everywhere: Use linusg@serenityos.org for my copyright headersLinus Groh
2021-04-22Everything: Move to SPDX license identifiers in all files.Brian Gianforcaro
SPDX License Identifiers are a more compact / standardized way of representing file license information. See: https://spdx.dev/resources/use/#identifiers This was done with the `ambr` search and replace tool. ambr --no-parent-ignore --key-from-file --rep-from-file key.txt rep.txt *
2021-04-21LibCoreDump: Convert String::format() => String::formatted()Andreas Kling
2021-04-18Everywhere: Fix a bunch of typosLinus Groh
2021-03-28LibCoreDump+CrashDaemon: Compress coredumpsIdan Horowitz
Most coredumps contain large amounts of consecutive null bytes and as such are a prime candidate for compression. This commit makes CrashDaemon compress files once the kernel finishes emitting them, as well as adds the functionality needed in LibCoreDump to then parse them.
2021-02-23Everywhere: Rename ASSERT => VERIFYAndreas Kling
(...and ASSERT_NOT_REACHED => VERIFY_NOT_REACHED) Since all of these checks are done in release builds as well, let's rename them to VERIFY to prevent confusion, as everyone is used to assertions being compiled out in release. We can introduce a new ASSERT macro that is specifically for debug checks, but I'm doing this wholesale conversion first since we've accumulated thousands of these already, and it's not immediately obvious which ones are suitable for ASSERT.
2021-02-21LibELF: Fix various clang-tidy warningsAndreas Kling
Remove a bunch of unused code, unnecessary const, and make some non-object-specific member functions static.
2021-01-15LibCoreDump: Expose arguments and environmentLinus Groh
We can pull those from the coredump's ProcessInfo JSON, do some basic sanity checks and expose them as ready-to-use Vector<String>s.
2021-01-15LibCoreDump+Crash{Daemon,Reporter}: Make backtraces thread-specificLinus Groh
We want to show an individual backtrace for each thread, not one containing backtrace entries from all threads. Fixes #4778.
2021-01-15Kernel+LibELF+LibCoreDump+CrashReporter: Use JSON for ProcessInfoLinus Groh
This is in preparation of adding (much) more process information to coredumps. As we can only have one null-terminated char[] of arbitrary length in each struct it's now a single JSON blob, which is a great fit: easily extensible in the future and allows for key/value pairs and even nested objects, which will be used e.g. for the process environment, for example.
2021-01-12Libraries: Move to Userland/Libraries/Andreas Kling