【问题标题】:Breakpad fails to create log on Multithreaded ARM ApplicationBreakpad 无法在多线程 ARM 应用程序上创建日志
【发布时间】:2018-03-05 15:33:11
【问题描述】:

我一直在使用 google breakpad 开发一个应用程序来生成故障转储,我注意到一旦应用程序是多线程的,故障转储似乎不再生成(而 .dmp 文件在单次成功生成线程应用程序)。

在寻找此问题的原因时,我发现 an answered question while running under an i386 architecture 我不认为它与 ARM 问题超级相关,并且似乎与此类似 reported, but unresolved, issue with ARM.

在通常创建日志的回调函数中,给出了正确的路径,但“成功的”布尔值是错误的,我不确定我能做什么,如果有的话,我可以解决这个失败。

此应用程序在 ARM Cortex-A9 处理器上运行,如果有帮助的话。

我主要是在寻找可以尝试解决此问题的任何类型的反馈或路径。如果我可以提供任何进一步的信息,请告诉我。

【问题讨论】:

    标签: multithreading google-breakpad


    【解决方案1】:

    这是一个远景,但就我而言,问题是我正在使用-D_FILE_OFFSET_BITS=64 编译我的应用程序(但不是breakpad)。这导致 breakpad 中的 off_t 为 32 位,但我的应用程序认为它是 64 位。最终,一个 MinidumpDescriptor 被操作并将 -1 写入它的 off_t 字段 (size_limit_),该字段溢出到相邻字段 (skip_dump_if_principal_mapping_not_referenced_) 将其设置为 true(实际上,大于 0 的垃圾值计算为真的)。

    如果人们愿意,我可以提供更多细节。我花了整整两天的时间来追踪它,并想为别人省去麻烦。我的解决方案是使用-D_FILE_OFFSET_BITS=64重新编译breakpad

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 1970-01-01
      • 2013-02-13
      相关资源
      最近更新 更多