Ida Pro 6.9崩溃

时间:2016-06-23 15:37:08

标签: python ida etcd

我正在为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来源

1 个答案:

答案 0 :(得分:1)

目录/_locks/ida_lock下已存在密钥。

列出/_locks/ida_lock下的文件:

etcdctl ls /_locks/ida_lock

要从中拯救自己,请运行:

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

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