代码之家  ›  专栏  ›  技术社区  ›  Jonas Byström

STLport崩溃(种族条件,仅限于达尔文?)

  •  1
  • Jonas Byström  · 技术社区  · 16 年前

    当我在达尔文运行STLport时,我遇到了一个奇怪的崩溃(除了在Mac上没有看到过它,但在i686和PowerPC上完全一样的东西崩溃了。)这是gdb中的样子:

    Program received signal EXC_BAD_ACCESS, Could not access memory.
    Reason: 13 at address: 0x0000000000000000
    [Switching to process 21097]
    0x000000010120f47c in stlp_std::__node_alloc_impl::_M_allocate ()
    

    这可能是STLport中的一些设置,我注意到Mac.h和MacOSX.h在功能上似乎远远落后。我还知道它一定是某种类型的竞争条件,因为它不仅仅通过调用这个方法(implicity called)发生。崩溃主要发生在我推送系统时,运行10个同时执行大量字符串处理的线程。

    救命!!! :)

    编辑

    2 回复  |  直到 16 年前
        1
  •  1
  •   vprajan    16 年前

    隐马尔可夫模型。。STLPort使用分配器,它获取平台内存,并在需要时在内部将其汇集到数据结构中。

    只要检查崩溃发生时,给执行线程的堆就足以让alloc发生。即使alloc失败,这种崩溃也可能发生。

    我不确定您正在处理的当前配置中STL分配器的粒度。请检查stl\u config.h以了解这一点。

        2
  •  0
  •   Community Mohan Dere    8 年前

    这个问题是由一个 unrelated crash bug ,导致内存覆盖,导致STLport崩溃。