Comments (24)
On my Linux machine, init()
is only called once, whether or not I open a database. Same goes with my Windows VM. I tested by writing to a file within init()
to make sure I didn't miss any debug output.
from idarling.
No I can't because.... This is a bug ! Mouahahahahah \o>
from idarling.
@patateqbool Could you remove your "ugly hacks" in your next commit and close this issue? Thanks!
from idarling.
The previous fix seems to crash IDA in some cases.
Here are the steps to reproduce in order to reach the bug:
- cp /bin/ls /tmp
- open /tmp/ls with ida and close to create /tmp/ls.i64
- cp /tmp/ls.i64 /tmp/ls2.i64
- ida64 /tmp/ls.i64 & ida64 /tmp/ls2.i64
Open first /tmp/ls2.i64 and then /tmp/ls.i64, the first one should open correctly and the second one should crash.
@NeatMonster can you check this out ? Thanks !
from idarling.
(gdb) bt
#0 0x0000000000000000 in ?? ()
#1 0x00007f4c9ba8d02e in py_call_nav_colorizer (nbytes=<optimized out>, ea=18446744073709551615,
col=<optimized out>) at obj/x64_linux_gcc_64_opt/wrappers/kernwin.cpp:5023
#2 _wrap_call_nav_colorizer (args=<optimized out>) at obj/x64_linux_gcc_64_opt/wrappers/kernwin.cpp:13904
#3 0x00007f4ca03a07e4 in PyEval_EvalFrameEx () from /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
#4 0x00007f4ca04cab88 in PyEval_EvalCodeEx () from /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
#5 0x00007f4ca039f580 in PyEval_EvalFrameEx () from /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
#6 0x00007f4ca04cab88 in PyEval_EvalCodeEx () from /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
#7 0x00007f4ca0480c59 in ?? () from /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
#8 0x00007f4ca03403c3 in PyObject_Call () from /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
#9 0x00007f4ca049784c in ?? () from /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
#10 0x00007f4ca03403c3 in PyObject_Call () from /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
#11 0x00007f4ca0340531 in PyObject_CallFunction () from /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
#12 0x00007f4c9ba5d8a9 in lambda_t::call_py_colorizer (ea=18446744073709551615, nbytes=0)
at obj/x64_linux_gcc_64_opt/wrappers/kernwin.cpp:4978
#13 0x00005627bd35ad4d in ?? ()
#14 0x00005627bd35bd69 in ?? ()
#15 0x00007f4caa32ca24 in QT::QApplicationPrivate::notify_helper(QT::QObject*, QT::QEvent*) ()
from /home/neat/ida-7.1/libQt5Widgets.so.5
#16 0x00007f4caa32c84f in QT::QApplication::notify(QT::QObject*, QT::QEvent*) ()
from /home/neat/ida-7.1/libQt5Widgets.so.5
#17 0x00005627bd1a4509 in ?? ()
#18 0x00007f4ca95bd1e4 in QT::QCoreApplication::notifyInternal2(QT::QObject*, QT::QEvent*) ()
from /home/neat/ida-7.1/libQt5Core.so.5
#19 0x00007f4ca95c127c in QT::QCoreApplication::sendEvent(QT::QObject*, QT::QEvent*) ()
from /home/neat/ida-7.1/libQt5Core.so.5
#20 0x00007f4ca95be5c7 in QT::QCoreApplicationPrivate::sendPostedEvents(QT::QObject*, int, QT::QThreadData*) ()
from /home/neat/ida-7.1/libQt5Core.so.5
---Type <return> to continue, or q <return> to quit---
Sounds like it is related to the navbar colorizer. ;-)
from idarling.
gef➤ bt
#0 0x00007fde8c1b0e7f in sipSubClass_QApplication () at /home/patate/ida-7.1/python/PyQt5/QtWidgets.so
#1 0x00007fde8d080bd8 in () at /home/patate/ida-7.1/python/lib/python2.7/lib-dynload/sip.so
#2 0x00007fde8d084b2b in () at /home/patate/ida-7.1/python/lib/python2.7/lib-dynload/sip.so
#3 0x00007fde8c177f59 in convertFrom_QList_0101QWidget () at /home/patate/ida-7.1/python/PyQt5/QtWidgets.so
#4 0x00007fde8d08c689 in () at /home/patate/ida-7.1/python/lib/python2.7/lib-dynload/sip.so
#5 0x00007fde8c029f76 in meth_QApplication_topLevelWidgets () at /home/patate/ida-7.1/python/PyQt5/QtWidgets.so
#6 0x00007fde9acfe3a9 in PyEval_EvalFrameEx () at /usr/lib/libpython2.7.so.1.0
#7 0x00007fde9acfe9d0 in PyEval_EvalFrameEx () at /usr/lib/libpython2.7.so.1.0
#8 0x00007fde9ad590da in PyEval_EvalCodeEx () at /usr/lib/libpython2.7.so.1.0
#9 0x00007fde9aceae0f in function_call.lto_priv () at /usr/lib/libpython2.7.so.1.0
#10 0x00007fde9aca20e3 in PyObject_Call () at /usr/lib/libpython2.7.so.1.0
#11 0x00007fde9ad0e49f in instancemethod_call.lto_priv () at /usr/lib/libpython2.7.so.1.0
#12 0x00007fde9aca20e3 in PyObject_Call () at /usr/lib/libpython2.7.so.1.0
#13 0x00007fde9ad46de4 in slot_tp_init.lto_priv () at /usr/lib/libpython2.7.so.1.0
#14 0x00007fde9acc02c5 in type_call.lto_priv () at /usr/lib/libpython2.7.so.1.0
#15 0x00007fde9aca20e3 in PyObject_Call () at /usr/lib/libpython2.7.so.1.0
#16 0x00007fde9ad0380e in PyEval_EvalFrameEx () at /usr/lib/libpython2.7.so.1.0
#17 0x00007fde9ad590da in PyEval_EvalCodeEx () at /usr/lib/libpython2.7.so.1.0
#18 0x00007fde9aceae0f in function_call.lto_priv () at /usr/lib/libpython2.7.so.1.0
#19 0x00007fde9aca20e3 in PyObject_Call () at /usr/lib/libpython2.7.so.1.0
#20 0x00007fde9ad0e49f in instancemethod_call.lto_priv () at /usr/lib/libpython2.7.so.1.0
from idarling.
Still not working on my side:
gef➤ bt
#0 0x0000000000000000 in ()
#1 0x00007f8c39bdfe82 in sipSubClass_QApplication () at /home/patate/ida-7.1/python/PyQt5/QtWidgets.so
#2 0x00007f8c3aaafbd8 in () at /home/patate/ida-7.1/python/lib/python2.7/lib-dynload/sip.so
#3 0x00007f8c3aab3b2b in () at /home/patate/ida-7.1/python/lib/python2.7/lib-dynload/sip.so
#4 0x00007f8c39ba6f59 in convertFrom_QList_0101QWidget () at /home/patate/ida-7.1/python/PyQt5/QtWidgets.so
#5 0x00007f8c3aabb689 in () at /home/patate/ida-7.1/python/lib/python2.7/lib-dynload/sip.so
#6 0x00007f8c39a58f76 in meth_QApplication_topLevelWidgets () at /home/patate/ida-7.1/python/PyQt5/QtWidgets.so
#7 0x00007f8c4c8a43a9 in PyEval_EvalFrameEx () at /usr/lib/libpython2.7.so.1.0
#8 0x00007f8c4c8a49d0 in PyEval_EvalFrameEx () at /usr/lib/libpython2.7.so.1.0
#9 0x00007f8c4c8a49d0 in PyEval_EvalFrameEx () at /usr/lib/libpython2.7.so.1.0
#10 0x00007f8c4c8a49d0 in PyEval_EvalFrameEx () at /usr/lib/libpython2.7.so.1.0
#11 0x00007f8c4c8a49d0 in PyEval_EvalFrameEx () at /usr/lib/libpython2.7.so.1.0
#12 0x00007f8c4c8ff0da in PyEval_EvalCodeEx () at /usr/lib/libpython2.7.so.1.0
#13 0x00007f8c4c890e0f in function_call.lto_priv () at /usr/lib/libpython2.7.so.1.0
#14 0x00007f8c4c8480e3 in PyObject_Call () at /usr/lib/libpython2.7.so.1.0
#15 0x00007f8c4c8b449f in instancemethod_call.lto_priv () at /usr/lib/libpython2.7.so.1.0
#16 0x00007f8c4c8480e3 in PyObject_Call () at /usr/lib/libpython2.7.so.1.0
#17 0x00007f8c4c8fe7d1 in PyEval_CallObjectWithKeywords () at /usr/lib/libpython2.7.so.1.0
#18 0x00007f8c4cc457a1 in () at /home/patate/ida-7.1/plugins/python64.so
#19 0x00007f8c5664219b in () at /home/patate/ida-7.1/libida64.so
#20 0x00007f8c56646669 in init_plugins () at /home/patate/ida-7.1/libida64.so
#21 0x000055f9cab0aedb in ()
#22 0x000055f9cab0b95a in ()
#23 0x000055f9cab0c3a3 in ()
#24 0x000055f9caaf334a in ()
#25 0x00007f8c53c8e06b in __libc_start_main () at /usr/lib/libc.so.6
#26 0x000055f9caaf87dd in ()
#27 0x00007ffeb3429e18 in ()
#28 0x000000000000001c in ()
#29 0x0000000000000002 in ()
#30 0x00007ffeb342a5f4 in ()
#31 0x00007ffeb342a60f in ()
#32 0x0000000000000000 in ()
from idarling.
@patateqbool Could you check again after commit 979bf7c?
from idarling.
After 979bf7c
I can't even run the plugin hahah
from idarling.
@NyaMisty Oops, should be fixed by @SilverBut 's commit (d8a95b4).
from idarling.
I'm currently at 4331e5d and I still have crashes :(
Here the backtrace
#1 0x00007fd41f737bd8 in () at /home/patate/ida-7.1/python/lib/python2.7/lib-dynload/sip.so
#2 0x00007fd41f73bb2b in () at /home/patate/ida-7.1/python/lib/python2.7/lib-dynload/sip.so
#3 0x00007fd41ee3df59 in convertFrom_QList_0101QWidget () at /home/patate/ida-7.1/python/PyQt5/QtWidgets.so
#4 0x00007fd41f743689 in () at /home/patate/ida-7.1/python/lib/python2.7/lib-dynload/sip.so
#5 0x00007fd41eceff76 in meth_QApplication_topLevelWidgets () at /home/patate/ida-7.1/python/PyQt5/QtWidgets.so
#6 0x00007fd431ab13a9 in PyEval_EvalFrameEx () at /usr/lib/libpython2.7.so.1.0
#7 0x00007fd431ab19d0 in PyEval_EvalFrameEx () at /usr/lib/libpython2.7.so.1.0
#8 0x00007fd431b0c0da in PyEval_EvalCodeEx () at /usr/lib/libpython2.7.so.1.0
#9 0x00007fd431a9de0f in function_call.lto_priv () at /usr/lib/libpython2.7.so.1.0
#10 0x00007fd431a550e3 in PyObject_Call () at /usr/lib/libpython2.7.so.1.0
#11 0x00007fd431ac149f in instancemethod_call.lto_priv () at /usr/lib/libpython2.7.so.1.0
#12 0x00007fd431a550e3 in PyObject_Call () at /usr/lib/libpython2.7.so.1.0
#13 0x00007fd431af9de4 in slot_tp_init.lto_priv () at /usr/lib/libpython2.7.so.1.0
#14 0x00007fd431a732c5 in type_call.lto_priv () at /usr/lib/libpython2.7.so.1.0
#15 0x00007fd431a550e3 in PyObject_Call () at /usr/lib/libpython2.7.so.1.0
#16 0x00007fd431ab680e in PyEval_EvalFrameEx () at /usr/lib/libpython2.7.so.1.0
#17 0x00007fd431b0c0da in PyEval_EvalCodeEx () at /usr/lib/libpython2.7.so.1.0
#18 0x00007fd431a9de0f in function_call.lto_priv () at /usr/lib/libpython2.7.so.1.0
#19 0x00007fd431a550e3 in PyObject_Call () at /usr/lib/libpython2.7.so.1.0
#20 0x00007fd431ac149f in instancemethod_call.lto_priv () at /usr/lib/libpython2.7.so.1.0
#21 0x00007fd431a550e3 in PyObject_Call () at /usr/lib/libpython2.7.so.1.0
#22 0x00007fd431af9de4 in slot_tp_init.lto_priv () at /usr/lib/libpython2.7.so.1.0
#23 0x00007fd431a732c5 in type_call.lto_priv () at /usr/lib/libpython2.7.so.1.0
#24 0x00007fd431a550e3 in PyObject_Call () at /usr/lib/libpython2.7.so.1.0
#25 0x00007fd431ab680e in PyEval_EvalFrameEx () at /usr/lib/libpython2.7.so.1.0
#26 0x00007fd431b0c0da in PyEval_EvalCodeEx () at /usr/lib/libpython2.7.so.1.0
#27 0x00007fd431e51a71 in () at /home/patate/ida-7.1/plugins/python64.so
#28 0x00007fd43b84fb3a in () at /home/patate/ida-7.1/libida64.so
#29 0x00007fd43b853669 in init_plugins () at /home/patate/ida-7.1/libida64.so
#30 0x0000562c04f22edb in ()
#31 0x0000562c04f2395a in ()
#32 0x0000562c04f243a3 in ()
#33 0x0000562c04f0b34a in ()
#34 0x00007fd438e9b06b in __libc_start_main () at /usr/lib/libc.so.6
#35 0x0000562c04f107dd in ()
#36 0x00007ffc5837a218 in ()
#37 0x000000000000001c in ()
#38 0x0000000000000002 in ()
#39 0x00007ffc5837b5f0 in ()
#40 0x00007ffc5837b60b in ()
#41 0x0000000000000000 in ()
from idarling.
In addition, the latest commit introduced these messages when closing IDA
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
from idarling.
@patateqbool What's the status on this issue? Still occurring?
from idarling.
Currently working on macOS. I'll tell you when I go back under my workflow which generates the problems.
from idarling.
I can partially reproduce it in latest commit 1d345cc, using IDA 7.1 Linux.
However I don't think the plugin is loaded twice, since if you do this patch in idarling/inferface/plugin.py
you can see while the initialize message and get me out
message print out 2 times, the message already out
only output 1 time.
Maybe someone wrongly used logging
?
Patch:
diff --git a/idarling/plugin.py b/idarling/plugin.py
index 648bb88..3ea62a1 100644
--- a/idarling/plugin.py
+++ b/idarling/plugin.py
@@ -147,6 +147,8 @@ class Plugin(ida_idaapi.plugin_t):
"""
Print the banner into the console.
"""
+ logger.info("GET ME OUT!")
+ print("Already out.")
copyright = "(c) %s" % self.PLUGIN_AUTHORS
logger.info("-" * 75)
from idarling.
@SilverBut Are you taking about this crash? I've found that the __init__
method from the plugin class is called twice if you're opening an IDB, but that init
and term
methods are only called once. But that shouldn't be an issue because all the real initialization stuff should be performed within init
.
However, @patateqbool and I have been using this ticket to track other unrelated crashes (e.g. the backtraces), when we should have opened new issues instead. Sorry about that...
from idarling.
Alright I see...
from idarling.
By the way, this comment
In addition, the latest commit introduced these messages when closing IDA
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
Has now been resolved (but not comitted yet).
from idarling.
@SilverBut ack, thank you.
from idarling.
@SilverBut I believed it is fixed in the master branch.
The layout of the network settings tab was being added to self
instead of tab
.
from idarling.
@SilverBut I believed it is fixed in the master branch.
@NeatMonster At least not in commit 1d345cc for IDA 7.1 under Linux. You can still see those hints when opening the "settings" dialog.
from idarling.
@SilverBut That's weird. I don't see them with the exact same setup.
from idarling.
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
@patateqbool Could you check if the message is gone after the recent changes? Have you encountered another crash of IDA since to QCoreApplication
to qApp
change?
from idarling.
@NeatMonster nop, it's fine now. I don't have crash anymore too. :) I think we can close this issue.
from idarling.
Related Issues (20)
- Failed to install action OpenAction HOT 2
- High CPU usage HOT 13
- Will there be a release of IDArling anytime soon? HOT 1
- Notepad is not sync'ed HOT 1
- Marked locations not sync'ed HOT 1
- User Interrupt when running idapython script HOT 1
- Big database files are downloaded/uploaded to server very slow HOT 10
- Huge database is very slow on downloading/uploading
- After opening the IDB, the first call sdk decompile show error HOT 2
- Add missing hooks for IDA 7.2 HOT 1
- feature request: allow user to rename a project or database
- Allow user to delete a project or database
- feature request: syncing mark pages? HOT 1
- Documentation clarification HOT 1
- Open from server without closing previous idb crashes IDA HOT 2
- Debugging cause huge load on other clients
- How to generate a certificate for IDArling server and client?
- Big DB Upload/Download failes due to "MemoryError" HOT 1
- OverflowError: Error while calling Python callback <nav_colorizer> with IDA 7.3
- Support IDA 7.4 & Python 3 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from idarling.