diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 397cf85..983f3c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ 'ubuntu-22.04', 'ubuntu-latest', 'windows-2019', 'windows-latest' ] + os: [ 'ubuntu-22.04', 'ubuntu-latest', 'windows-latest' ] include: # we need to ship ubuntu 22.04 because of glibc reasons - os: ubuntu-22.04 @@ -37,11 +37,6 @@ jobs: cxx: clang++ upload: false upload-artifact-name: none - - os: windows-2019 - cc: msvc - cxx: msvc - upload: false - upload-artifact-name: none - os: windows-latest cc: msvc cxx: msvc diff --git a/extension/extension.cpp b/extension/extension.cpp index fbd773e..4c85c6d 100644 --- a/extension/extension.cpp +++ b/extension/extension.cpp @@ -558,24 +558,24 @@ class UploadThread: public IThread if (log) fflush(log); auto debugFileDir = google_breakpad::DirName(debugFile); - std::vector debug_dirs{ + std::vector debug_dirs{ debugFileDir, debugFileDir + "/.debug", "/usr/lib/debug" + debugFileDir, }; std::ostringstream outputStream; - google_breakpad::DumpOptions options(ALL_SYMBOL_DATA, true, true); + google_breakpad::DumpOptions options(ALL_SYMBOL_DATA, true, true, true); { StderrInhibitor stdrrInhibitor; - if (!WriteSymbolFile(debugFile, debugFile, "Linux", debug_dirs, options, outputStream)) { + if (!WriteSymbolFile(debugFile, debugFile, debugFile, "Linux", debug_dirs, options, outputStream)) { outputStream.str(""); outputStream.clear(); // Try again without debug dirs. - if (!WriteSymbolFile(debugFile, debugFile, "Linux", {}, options, outputStream)) { + if (!WriteSymbolFile(debugFile, debugFile, debugFile, "Linux", {}, options, outputStream)) { if (log) fprintf(log, "Failed to process symbol file\n"); if (log) fflush(log); return false; @@ -791,7 +791,7 @@ class UploadThread: public IThread std::string::size_type file_start = 0; if (slash != std::string::npos && (backslash == std::string::npos || slash > backslash)) { file_start = slash + 1; - } else if (backslash != string::npos) { + } else if (backslash != std::string::npos) { file_start = backslash + 1; } diff --git a/patches/0001-Ignore-invalid-modules-rather-than-bailing-on-the-en.patch b/patches/0001-Ignore-invalid-modules-rather-than-bailing-on-the-en.patch index c90ad57..60f3220 100644 --- a/patches/0001-Ignore-invalid-modules-rather-than-bailing-on-the-en.patch +++ b/patches/0001-Ignore-invalid-modules-rather-than-bailing-on-the-en.patch @@ -9,10 +9,10 @@ Subject: [PATCH 1/5] Ignore invalid modules rather than bailing on the entire 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc -index 83e5a868..a7d564f2 100644 +index 775f117c..066fd36f 100644 --- a/src/processor/minidump.cc +++ b/src/processor/minidump.cc -@@ -3195,7 +3195,7 @@ bool MinidumpModuleList::Read(uint32_t expected_size) { +@@ -3198,7 +3198,7 @@ bool MinidumpModuleList::Read(uint32_t expected_size) { BPLOG(ERROR) << "MinidumpModuleList could not read required module " "auxiliary data for module " << module_index << "/" << module_count; @@ -21,7 +21,7 @@ index 83e5a868..a7d564f2 100644 } // It is safe to use module->code_file() after successfully calling -@@ -3207,7 +3207,14 @@ bool MinidumpModuleList::Read(uint32_t expected_size) { +@@ -3210,7 +3210,14 @@ bool MinidumpModuleList::Read(uint32_t expected_size) { BPLOG(ERROR) << "MinidumpModuleList found bad base address for module " << module_index << "/" << module_count << ", " << module.code_file(); @@ -37,7 +37,7 @@ index 83e5a868..a7d564f2 100644 } // Some minidumps have additional modules in the list that are duplicates. -@@ -3234,7 +3241,7 @@ bool MinidumpModuleList::Read(uint32_t expected_size) { +@@ -3237,7 +3244,7 @@ bool MinidumpModuleList::Read(uint32_t expected_size) { << module_index << "/" << module_count << ", " << module.code_file() << ", " << HexString(base_address) << "+" << HexString(module_size); diff --git a/patches/0002-Write-FUNC-records-instead-of-PUBLIC-for-ELF-symbols.patch b/patches/0002-Write-FUNC-records-instead-of-PUBLIC-for-ELF-symbols.patch index 08ce6b1..e3fd2c0 100644 --- a/patches/0002-Write-FUNC-records-instead-of-PUBLIC-for-ELF-symbols.patch +++ b/patches/0002-Write-FUNC-records-instead-of-PUBLIC-for-ELF-symbols.patch @@ -12,18 +12,18 @@ diff --git a/src/common/linux/elf_symbols_to_module.cc b/src/common/linux/elf_sy index 70d50f89..f21460bf 100644 --- a/src/common/linux/elf_symbols_to_module.cc +++ b/src/common/linux/elf_symbols_to_module.cc -@@ -163,19 +163,28 @@ bool ELFSymbolsToModule(const uint8_t* symtab_section, +@@ -164,19 +164,28 @@ bool ELFSymbolsToModule(const uint8_t* symtab_section, while(!iterator->at_end) { if (ELF32_ST_TYPE(iterator->info) == STT_FUNC && iterator->shndx != SHN_UNDEF) { - auto ext = std::make_unique(iterator->value); - ext->name = SymbolString(iterator->name_offset, strings); -+ string name = SymbolString(iterator->name_offset, strings); ++ auto name = SymbolString(iterator->name_offset, strings); #if !defined(__ANDROID__) // Android NDK doesn't provide abi::__cxa_demangle. int status = 0; char* demangled = -- abi::__cxa_demangle(ext->name.c_str(), NULL, NULL, &status); -+ abi::__cxa_demangle(name.c_str(), NULL, NULL, &status); +- abi::__cxa_demangle(ext->name.c_str(), nullptr, nullptr, &status); ++ abi::__cxa_demangle(name, nullptr, nullptr, &status); if (demangled) { if (status == 0) - ext->name = demangled; diff --git a/third_party/breakpad b/third_party/breakpad index 255dbbd..baa562b 160000 --- a/third_party/breakpad +++ b/third_party/breakpad @@ -1 +1 @@ -Subproject commit 255dbbd061a400e7a3f601e82a62e65058b39e5e +Subproject commit baa562ba435b01bf887ee71427256c40da7dcc49