这是 Pro 6.9 崩溃

Ida Pro 6.9 crash

我正在为 Ida(在 python)编写一个插件,它使用 Etcd 远程键值存储系统。我的问题是,当我尝试锁定服务器时

        lock = etcd.Lock(self.client, 'ida_lock')
        Should timeout after 30 seconds. Hopefully that is enough.
        lock.acquire(blocking=True,lock_ttl=None,timeout=30)
        if lock.is_acquired:

            data,idc_file = self.get_idc_data()

            if os.path.isfile('expendable.idc'):
                self.client.write('/fREd/' + self.md5 + '/all/', idc_file, prevValue = open('expendable.idc','r').readlines())
            else:
                self.client.write('/fREd/' + self.md5 + '/all/', idc_file)
        lock.release()

像这样,Ida 僵住了,我想知道是否有人知道为什么会发生这种情况或如何解决它。

所以作为参考,包含这个的方法是通过键盘快捷键调用的

idaapi.add_hotkey('Ctrl-.', self.push_data)

毫无疑问是锁导致的问题。

您可以在 https://github.com/jplana/python-etcd

查看 python-etcd 源

目录/_locks/ida_lock.下已经存在密钥

列出/_locks/ida_lock下的文件:

etcdctl ls /_locks/ida_lock

为了摆脱这种情况,运行 :

etcdctl rm /_locks/ida_lock --dir --recursive

为了避免这种情况,你可以在finally块运行lock.release()就好像你不释放一样,/_locks/ida_lock下会有一个文件残留.
此外,您可以添加一些日志记录配置(您可以参考here)以在处理此类问题时进行更多挖掘。