【问题标题】:rw_semaphore's negative count valuerw 信号量是负计数值
【发布时间】:2017-01-09 21:15:46
【问题描述】:

我正在调试内核故障转储。一个进程试图内存映射一个新区域似乎存在问题。问题是它无法保存内存映射信号量。

当我查看进程的 mm_struct 并打印其内容时。我看到struct rw_semaphore mmap_sem 如下所示。现在,count 的值是否看起来可疑?它有一个负值,好像有一个竞争条件,在检查为零后它被两个不同的线程减少了两次。

  mmap_sem = {
    count = -4294967295,
    wait_lock = {
      {
        rlock = {
          raw_lock = {
            slock = 262148
          }
        }
      }
    },
    wait_list = {
      next = 0xffff8801f0113e48,
      prev = 0xffff8801f0113e48
    }
  },

【问题讨论】:

    标签: linux-kernel linux-device-driver mutex embedded-linux semaphore


    【解决方案1】:

    很抱歉给您带来了困惑。我认为崩溃会提取正确的数据类型并在打印出所有值时正确使用它...

    看起来崩溃实用程序没有将count 成员读取为int ....

    当我将它打印为 int 时,我得到了正确的值。

    crash> p (int) (((struct mm_struct *) 0xffff8801f15fa540)->mmap_sem).count
    $13 = 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-10-03
      相关资源
      最近更新 更多