首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux提供的cmpxchg调用会崩溃吗?

linux提供的cmpxchg调用会崩溃吗?
EN

Stack Overflow用户
提问于 2013-04-26 19:47:56
回答 1查看 244关注 0票数 0

我使用的是linux内核(SLES11-SP2)提供的cmpxchg()。它崩溃的确切位置在2005行:

代码语言:javascript
复制
            if (cmpxchg(var, old, new) == old)
2002:       48 89 d8                mov    %rbx,%rax
2005:       f0 4d 0f b1 34 24       lock cmpxchg %r14,(%r12)
200b:       48 39 c3                cmp    %rax,%rbx
200e:       74 27                   je     2037 <atomicPatchFnPtr+0x77>

有没有关于如何进行调试的线索?这是由于锁定变量时的竞态条件造成的吗?或者我需要将其作为内核的bug发布?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-26 21:05:07

如果传递给锁cmpxchg指令的地址(此处为%r12 )无效,则锁cmpxchg指令会导致访问冲突。这可能就是上面代码行中的变量var。这表明var指向了一些无效的内存。这不是cmpxchg函数中的竞争,但它可能仍然是调用函数中的竞争条件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16235688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档