Update breakpad version (#35)

* Update breakpad version

* Remove win-2019 from CI
This commit is contained in:
Benoist 2025-09-18 22:03:02 +02:00 committed by GitHub
parent 5e319ecdc3
commit 04a6eeeedb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 15 additions and 20 deletions

View File

@ -22,7 +22,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ 'ubuntu-22.04', 'ubuntu-latest', 'windows-2019', 'windows-latest' ] os: [ 'ubuntu-22.04', 'ubuntu-latest', 'windows-latest' ]
include: include:
# we need to ship ubuntu 22.04 because of glibc reasons # we need to ship ubuntu 22.04 because of glibc reasons
- os: ubuntu-22.04 - os: ubuntu-22.04
@ -37,11 +37,6 @@ jobs:
cxx: clang++ cxx: clang++
upload: false upload: false
upload-artifact-name: none upload-artifact-name: none
- os: windows-2019
cc: msvc
cxx: msvc
upload: false
upload-artifact-name: none
- os: windows-latest - os: windows-latest
cc: msvc cc: msvc
cxx: msvc cxx: msvc

View File

@ -558,24 +558,24 @@ class UploadThread: public IThread
if (log) fflush(log); if (log) fflush(log);
auto debugFileDir = google_breakpad::DirName(debugFile); auto debugFileDir = google_breakpad::DirName(debugFile);
std::vector<string> debug_dirs{ std::vector<std::string> debug_dirs{
debugFileDir, debugFileDir,
debugFileDir + "/.debug", debugFileDir + "/.debug",
"/usr/lib/debug" + debugFileDir, "/usr/lib/debug" + debugFileDir,
}; };
std::ostringstream outputStream; std::ostringstream outputStream;
google_breakpad::DumpOptions options(ALL_SYMBOL_DATA, true, true); google_breakpad::DumpOptions options(ALL_SYMBOL_DATA, true, true, true);
{ {
StderrInhibitor stdrrInhibitor; StderrInhibitor stdrrInhibitor;
if (!WriteSymbolFile(debugFile, debugFile, "Linux", debug_dirs, options, outputStream)) { if (!WriteSymbolFile(debugFile, debugFile, debugFile, "Linux", debug_dirs, options, outputStream)) {
outputStream.str(""); outputStream.str("");
outputStream.clear(); outputStream.clear();
// Try again without debug dirs. // 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) fprintf(log, "Failed to process symbol file\n");
if (log) fflush(log); if (log) fflush(log);
return false; return false;
@ -791,7 +791,7 @@ class UploadThread: public IThread
std::string::size_type file_start = 0; std::string::size_type file_start = 0;
if (slash != std::string::npos && (backslash == std::string::npos || slash > backslash)) { if (slash != std::string::npos && (backslash == std::string::npos || slash > backslash)) {
file_start = slash + 1; file_start = slash + 1;
} else if (backslash != string::npos) { } else if (backslash != std::string::npos) {
file_start = backslash + 1; file_start = backslash + 1;
} }

View File

@ -9,10 +9,10 @@ Subject: [PATCH 1/5] Ignore invalid modules rather than bailing on the entire
1 file changed, 10 insertions(+), 3 deletions(-) 1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc 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 --- a/src/processor/minidump.cc
+++ b/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 " BPLOG(ERROR) << "MinidumpModuleList could not read required module "
"auxiliary data for module " << "auxiliary data for module " <<
module_index << "/" << module_count; module_index << "/" << module_count;
@ -21,7 +21,7 @@ index 83e5a868..a7d564f2 100644
} }
// It is safe to use module->code_file() after successfully calling // 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 " BPLOG(ERROR) << "MinidumpModuleList found bad base address for module "
<< module_index << "/" << module_count << ", " << module_index << "/" << module_count << ", "
<< module.code_file(); << module.code_file();
@ -37,7 +37,7 @@ index 83e5a868..a7d564f2 100644
} }
// Some minidumps have additional modules in the list that are duplicates. // 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_index << "/" << module_count << ", "
<< module.code_file() << ", " << HexString(base_address) << module.code_file() << ", " << HexString(base_address)
<< "+" << HexString(module_size); << "+" << HexString(module_size);

View File

@ -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 index 70d50f89..f21460bf 100644
--- a/src/common/linux/elf_symbols_to_module.cc --- a/src/common/linux/elf_symbols_to_module.cc
+++ b/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) { while(!iterator->at_end) {
if (ELF32_ST_TYPE(iterator->info) == STT_FUNC && if (ELF32_ST_TYPE(iterator->info) == STT_FUNC &&
iterator->shndx != SHN_UNDEF) { iterator->shndx != SHN_UNDEF) {
- auto ext = std::make_unique<Module::Extern>(iterator->value); - auto ext = std::make_unique<Module::Extern>(iterator->value);
- ext->name = SymbolString(iterator->name_offset, strings); - 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. #if !defined(__ANDROID__) // Android NDK doesn't provide abi::__cxa_demangle.
int status = 0; int status = 0;
char* demangled = char* demangled =
- abi::__cxa_demangle(ext->name.c_str(), NULL, NULL, &status); - abi::__cxa_demangle(ext->name.c_str(), nullptr, nullptr, &status);
+ abi::__cxa_demangle(name.c_str(), NULL, NULL, &status); + abi::__cxa_demangle(name, nullptr, nullptr, &status);
if (demangled) { if (demangled) {
if (status == 0) if (status == 0)
- ext->name = demangled; - ext->name = demangled;

@ -1 +1 @@
Subproject commit 255dbbd061a400e7a3f601e82a62e65058b39e5e Subproject commit baa562ba435b01bf887ee71427256c40da7dcc49