Code Monkey home page Code Monkey logo

snippets's Introduction

Snippet UI Plugin (v1.26)

Author: Vector 35 Inc

Powerful code-editing plugin for writing and managing python code-snippets with syntax highlighting, hotkey binding and other features

Description:

The snippet editor started as a simple example UI plugin to demonstrate new features available to UI plugins. It has turned into a functionally useful plugin in its own right. The snippet editor allows you to write small bits of code that might not be big enough to warrant the effort of a full plugin but are long enough that you don't want to retype them every time in the python-console!

As an added bonus, all snippets are added to the snippets menu and hot-keys can be associated with them as they make use of the action system. All action-system items are also available through the command-palette (CTL/CMD-p).

.

Installation Instructions

Darwin

no special instructions, package manager is recommended

Linux

no special instructions, package manager is recommended

Windows

no special instructions, package manager is recommended

Minimum Version

This plugin requires the following minimum version of Binary Ninja:

  • 1528

Required Dependencies

The following dependencies are required for this plugin:

  • pip - pygments>=2.7.0,<2.9.0

License

This plugin is released under a MIT license.

Metadata Version

2

snippets's People

Contributors

couleeapps avatar d0ntpanic avatar dzervas avatar galenbwill avatar holmesmr avatar hydra45 avatar jonpalmisc avatar kylemiles avatar lwerdna avatar mrexodia avatar psifertex avatar tacixat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

snippets's Issues

Crash from Loading Specific Snippet

Version and Platform (required):

  • Binary Ninja Version: 4.1.5071-dev (41729337)
  • OS: MacOS
  • OS Version: 13.6.6
  • CPU Architecture: x64

Bug Description:
Python snippet causing crash

Steps To Reproduce:
Please provide all steps required to reproduce the behavior:

  1. Install Snippet plugin
  2. Add obfuscation_demo.py (from obf_demo.zip) to ~/Library/Application Support/Binary Ninja/snippets
  3. Open Snippets plugin and Binary Ninja will crash with a SIGABRT

Expected Behavior:
No crashing

Screenshots:
If applicable, please add screenshots here to help explain your problem.

Additional Information:

I tried to minify this test case to see exactly which part of the script is causing the crash but it appears there's some sort of UI caching that causes the crash to occur from the original script regardless of me clicking Reload All Snippets. Here's the crash log:
crash.log

Feature request: global snippets

Considering snippets can be found in the command palette even when a bv isn't loaded, it would be nice to be able to write snippets that can be used in that case. Eg: attach pydevd debugger

Make snippet from python console contents

Requested via stream: Joe Rozner​it: would be cool to take the current code from the python console and extract it into a snippet

It would be nice to have an easy "turn my python console text into a snippet" action to speed up the process for creating snippets. Might have to do some fancy logic for taking the correct console history entries in case your history is full of slightly busted revisions and one correct revision. Maybe a popup with the options would work.

QT crash on macOS when opening snippets editor.

Version and Platform (required):

  • Binary Ninja Version: 4.1.5251-dev (04280582) - commercial
  • OS: macOS
  • OS Version: 14.4.1
  • CPU Architecture: Apple Silicon

Bug Description:
Open the snippets plugin. Immediate crash

Steps To Reproduce:
Please provide all steps required to reproduce the behavior:
Open the snippets plugin.

Expected Behavior:
Does not crash

Additional Information:
emailed .ips to jordan.

Crash when running snippets with errors from snippet editor

2144-dev Personal, Windows 10 python 3.8

So apologies in advance, this involves multiple bits of broken python, but I promise I hit this through general use then minimized. Im not just going around putting broken code in things to create bug reports :\

Repro:

  1. Open a binaryview, open the snippet editor
  2. Create a snippet with a syntax error
  3. Run it from the snippet editor itself:
    image
  4. Close the snippet editor and go to the python console
  5. Enter any python code that will error, I used for _ in xxx again
  6. Binja should immediately crash with a memory safety issue. It's usually a fast fail, but I've also seen a read access violation. It's always worked in one shot.
0:000> kn
 # Child-SP          RetAddr           Call Site
00 000000cd`c55fc120 00007ff8`1d4a695a ucrtbase!abort+0x4e
01 000000cd`c55fc150 00007fff`dd5f2170 VCRUNTIME140!_purecall+0x1a [d:\agent\_work\8\s\src\vctools\crt\vcruntime\src\misc\purevirt.cpp @ 29] 
02 000000cd`c55fc180 00007fff`dd641dc9 Qt5Core!QAbstractEventDispatcher::filterNativeEvent+0x80
03 000000cd`c55fc1e0 00007ff8`0a2653e9 Qt5Core!QEventDispatcherWin32::processEvents+0x589
04 000000cd`c55ff340 00007fff`dd5f384b qwindows!qt_plugin_query_metadata+0x1ea9
05 000000cd`c55ff370 00007fff`dd5f687e Qt5Core!QEventLoop::exec+0x1eb
06 000000cd`c55ff3f0 00007ff6`1d5275e9 Qt5Core!QCoreApplication::exec+0x15e
07 000000cd`c55ff460 00007ff6`1d5af397 binaryninja+0x175e9
08 000000cd`c55ffc10 00007ff6`1d5ae672 binaryninja+0x9f397
09 000000cd`c55ffca0 00007ff8`26d17bd4 binaryninja+0x9e672
0a 000000cd`c55ffce0 00007ff8`2884ce51 KERNEL32!BaseThreadInitThunk+0x14
0b 000000cd`c55ffd10 00000000`00000000 ntdll!RtlUserThreadStart+0x21

Snippets plugin startup error when installed

If the ~/.binaryninja/snippets/update_example_snippets.py file doesn't exist on the latest version of the plugin the following error occurs:

Unable to create /home/user/.binaryninja/snippets or unable to add example updater

Once the IOError try/except in __init__.py is commented out this error can be seen:

Exception ignored on calling ctypes callback function: <bound method PythonScriptingProvider._load_module of <binaryninja.scriptingprovider.PythonScriptingProvider object at 0x7fd2d31d6850>>
Traceback (most recent call last):
  File "/home/user/.local/opt/binaryninja/plugins/../python/binaryninja/scriptingprovider.py", line 837, in _load_module
    __import__(module)
  File "/home/user/.binaryninja/repositories/official/plugins/Vector35_snippets/__init__.py", line 60, in <module>
    shutil.copy(src_examples, dst_examples)
  File "/usr/lib/python3.9/shutil.py", line 426, in copy
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/usr/lib/python3.9/shutil.py", line 265, in copyfile
    with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:
FileNotFoundError: [Errno 2] No such file or directory: '/home/user/.binaryninja/repositories/official/plugins/Vector35_snippets/update_example_snippets.py'

Add option to automatically re-run snippet when file is saved

In case you want to use an external editor and lower the turnaround time even more, it would be useful to have an option that uses the file watcher and automatically runs your snippet when it's updated. Definitely needs to be opt-in because this sounds like a spicy way to bork your binja

Snippet triggered with no context and no view frame. This should not happen.

2144-dev, Window/python 3.8

If the python console is in focus, running any snippet will error:

Traceback (most recent call last):
  File "C:\Users\x\AppData\Roaming\Binary Ninja\repositories\official\plugins\Vector35_snippets\__init__.py", line 114, in <lambda>
    return lambda context: executeSnippet(code, context)
  File "C:\Users\x\AppData\Roaming\Binary Ninja\repositories\official\plugins\Vector35_snippets\__init__.py", line 62, in executeSnippet
    dock = DockHandler.getActiveDockHandler()
NameError: name 'DockHandler' is not defined

Repro:

  • Open any bv
  • Select the python console and enter anything, e.g. 1 == 1
  • Click the snippet menu and run any snippet
  • Error should show up in log window

Snippets hang UI

2144-dev Personal, Windows

import time
time.sleep(20)

Will render the UI entirely unresponsive. Obviously sleeping in a snippet like this is stupid, but it's the same behavior as iterating over a bunch of data.

Crash when opening the snippet editor

Happens on 4.1.4997-dev (3e7dbdea). I updated macOS to 14.4.1 (23E224) today, which I hope is not relevant.

Update: it works fine on the stable release (4.0.4958 (ddff9339))

Update: the crash is introduced in 4.1.4972-dev

Weird enough, this only reproduces on a release build from the build server. It does not reproduce locally, despite also being a release build

Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	       0x1979faa60 __pthread_kill + 8
1   libsystem_pthread.dylib       	       0x197a32c20 pthread_kill + 288
2   libsystem_c.dylib             	       0x19793fa20 abort + 180
3   Python                        	       0x1222357a8 fatal_error_exit + 16
4   Python                        	       0x1222355fc fatal_error + 44
5   Python                        	       0x122237b30 _Py_FatalErrorFormat + 228
6   Python                        	       0x122237b4c _Py_FatalRefcountErrorFunc + 28
7   Python                        	       0x122161114 none_dealloc + 28
8   Python                        	       0x1221e6e90 _PyEval_EvalFrameDefault + 600
9   Python                        	       0x1221f5848 _PyEval_Vector + 116
10  Python                        	       0x122116260 method_vectorcall + 168
11  QtGui.abi3.so                 	       0x137a96198 QSyntaxHighlighterWrapper::highlightBlock(QString const&) + 200
12  QtGui                         	       0x107e8dce8 QSyntaxHighlighterPrivate::reformatBlock(QTextBlock const&) + 128
13  QtGui                         	       0x107e8dc00 QSyntaxHighlighterPrivate::reformatBlocks(int, int, int) + 360
14  QtCore                        	       0x1065f38f8 void doActivate<false>(QObject*, int, void**) + 1396
15  QtGui                         	       0x107ea3bf4 QTextDocument::contentsChange(int, int, int) + 76
16  QtGui                         	       0x107ea8940 QTextDocumentPrivate::finishEdit() + 124
17  QtWidgets                     	       0x10775acdc QWidgetTextControlPrivate::setContent(Qt::TextFormat, QString const&, QTextDocument*) + 1180
18  QtWidgets.abi3.so             	       0x1529600d4 Sbk_QPlainTextEditFunc_setPlainText(_object*, _object*) + 140
19  Python                        	       0x12215e3d0 cfunction_vectorcall_O + 92
20  Python                        	       0x1221f1070 _PyEval_EvalFrameDefault + 42040
21  Python                        	       0x1221f5848 _PyEval_Vector + 116
22  Python                        	       0x122116260 method_vectorcall + 168
23  libpyside6.abi3.6.6.dylib     	       0x123870860 PySide::SignalManager::callPythonMetaMethod(QMetaMethod const&, void**, _object*, bool) + 540
24  libpyside6.abi3.6.6.dylib     	       0x12387041c PySide::SignalManager::SignalManagerPrivate::qtMethodMetacall(QObject*, int, void**) + 760
25  QtCore                        	       0x1065f3664 void doActivate<false>(QObject*, int, void**) + 736
26  QtCore                        	       0x1067b9298 QItemSelectionModel::emitSelectionChanged(QItemSelection const&, QItemSelection const&) + 216
27  QtCore                        	       0x1067b8e80 QItemSelectionModel::select(QItemSelection const&, QFlags<QItemSelectionModel::SelectionFlag>) + 636
28  QtCore                        	       0x1067b8b60 QItemSelectionModel::select(QModelIndex const&, QFlags<QItemSelectionModel::SelectionFlag>) + 68
29  QtCore.abi3.so                	       0x127920e4c Sbk_QItemSelectionModelFunc_select(_object*, _object*) + 732
30  Python                        	       0x12215db40 cfunction_call + 100
31  Python                        	       0x122112e58 _PyObject_MakeTpCall + 128
32  Python                        	       0x1221f11c4 _PyEval_EvalFrameDefault + 42380
33  Python                        	       0x1221f5848 _PyEval_Vector + 116
34  Python                        	       0x122113174 _PyObject_FastCallDictTstate + 208
35  Python                        	       0x12217d030 slot_tp_init + 188
36  Python                        	       0x1221754dc type_call + 136
37  Python                        	       0x122112e58 _PyObject_MakeTpCall + 128
38  Python                        	       0x1221f11c4 _PyEval_EvalFrameDefault + 42380
39  Python                        	       0x1221f5848 _PyEval_Vector + 116
40  Python                        	       0x122114e34 object_vacall + 228
41  Python                        	       0x122115084 PyObject_CallFunctionObjArgs + 44
42  binaryninjaui.abi3.so         	       0x151939320 std::__1::__function::__func<Sbk_UIAction_Init(_object*, _object*, _object*)::$_0, std::__1::allocator<Sbk_UIAction_Init(_object*, _object*, _object*)::$_0>, void (UIActionContext const&)>::operator()(UIActionContext const&) + 76
43  libbinaryninjaui.1.dylib      	       0x106bd93e0 UIActionHandler::executeAction(QString const&, UIActionContext const&) + 296
44  libbinaryninjaui.1.dylib      	       0x106bd9390 UIActionHandler::executeAction(QString const&, UIActionContext const&) + 216
45  libbinaryninjaui.1.dylib      	       0x106bd9390 UIActionHandler::executeAction(QString const&, UIActionContext const&) + 216
46  libbinaryninjaui.1.dylib      	       0x106c4358c CommandPalette::itemClicked(QModelIndex const&) + 576
47  QtCore                        	       0x1065f3694 void doActivate<false>(QObject*, int, void**) + 784
48  QtWidgets                     	       0x1077d2818 QAbstractItemView::activated(QModelIndex const&) + 52
49  libbinaryninjaui.1.dylib      	       0x106c41e1c CommandList::keyPressEvent(QKeyEvent*) + 192
50  QtWidgets                     	       0x1075af82c QWidget::event(QEvent*) + 488
51  QtWidgets                     	       0x107632a98 QFrame::event(QEvent*) + 56
52  QtWidgets                     	       0x1077d0db4 QAbstractItemView::event(QEvent*) + 484
53  QtWidgets                     	       0x10756716c QApplicationPrivate::notify_helper(QObject*, QEvent*) + 272
54  QtWidgets                     	       0x1075681c0 QApplication::notify(QObject*, QEvent*) + 1036
55  QtCore                        	       0x1065a9774 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 292
56  QtWidgets                     	       0x1075c3248 QWidgetWindow::event(QEvent*) + 180
57  QtWidgets                     	       0x10756716c QApplicationPrivate::notify_helper(QObject*, QEvent*) + 272
58  QtWidgets                     	       0x107567fac QApplication::notify(QObject*, QEvent*) + 504
59  QtCore                        	       0x1065a9774 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 292
60  QtGui                         	       0x107c83bd8 QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) + 252
61  QtGui                         	       0x107cdf1a4 QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 408
62  QtGui                         	       0x107cded90 QWindowSystemInterface::flushWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 524
63  libqcocoa.dylib               	       0x10568dcbc -[QNSView(Keys) handleKeyEvent:] + 1832
64  libqcocoa.dylib               	       0x10568ebb4 -[QNSView(Keys) keyDown:] + 92
65  AppKit                        	       0x19b493fec -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 480
66  AppKit                        	       0x19b493c38 -[NSWindow(NSEventRouting) sendEvent:] + 284
67  libqcocoa.dylib               	       0x105696f84 -[QNSWindow sendEvent:] + 860
68  AppKit                        	       0x19bb59e70 -[NSApplication(NSEventRouting) sendEvent:] + 1604
69  libqcocoa.dylib               	       0x105637510 -[QNSApplication sendEvent:] + 76
70  AppKit                        	       0x19b7a78cc -[NSApplication _handleEvent:] + 60
71  AppKit                        	       0x19b35bcdc -[NSApplication run] + 512
72  libqcocoa.dylib               	       0x1056435b8 QCocoaEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 2124
73  QtCore                        	       0x1065b3458 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 540
74  QtCore                        	       0x1065a9e00 QCoreApplication::exec() + 112
75  binaryninja                   	       0x104094a88 0x104034000 + 395912
76  dyld                          	       0x1976aa0e0 start + 2360

Where to report snippet bugs?

I see this repository is for the snippet manager plugin itself, not the snippets, which are hosted in a Gist. The Gist interface doesn't make it easy to report bugs or propose changes. So, where would you prefer issues to be reported in snippets?

In the meantime, I had trouble with simple_ui.py referencing uicontext, which I was able to fix by:

  • uicontext -> current_ui_context
  • context.widget -> context.getCurrentView().widget()

Fast way to copy path

It would be nice if there were a fast way to copy a snippet's path so that it may be opened in an editor like Vim.

Snippet Editor fails to open after closing any file tab

Version and Platform (required):

  • Binary Ninja Version: 3.1.3592-dev
  • OS: Windows
  • OS Version: 11
  • CPU Architecture: x64

Bug Description:
The Snippet Editor window will not open if any file tabs have been closed.

Steps To Reproduce:
Please provide all steps required to reproduce the behavior:

  1. Open any number of files for analysis
  2. Close a file tab
  3. Attempt to open the Snippet Editor
  4. See error in log

Expected Behavior:
I expected Snippet Editor to open regardless of what tabs have been closed.

Screenshots:
If applicable, please add screenshots here to help explain your problem.

Additional Information:
After closing any tab and attempting to open Snippets, the following output can be seen in the log:

Traceback (most recent call last):
  File "C:\Users\<USER>\AppData\Roaming\Binary Ninja\plugins\snippets-master\__init__.py", line 707, in launchPlugin
    snippets.show()
RuntimeError: Internal C++ object (Snippets) already deleted.

Restarting Binary Ninja is required to open the Snippet Editor again.

Cannot reopen snippets editor after closing bndb

2.4.dev, macOS 11.4

If the snippets editor is open when a bndb is closed, the editor will close. Attempting to reopen the snippets editor (via shortcut or Tools > Snippets menu) causes the following error in the log:

Traceback (most recent call last):
  File "/Users/galen/Library/Application Support/Binary Ninja/repositories/official/plugins/Vector35_snippets/__init__.py", line 507, in launchPlugin
    snippets.show()
RuntimeError: Internal C++ object (Snippets) already deleted.

Regardless of opening a bndb or not, cannot subsequently re-open snippets editor without restarting binary ninja, but snippets still run successfully from shortcuts and the Tools > Snippets menu.

Attempting to close an open snippets dialog during long analysis hangs UI

If the snippets dialog is opened while a long analysis is in progress, attempting to close the dialog hangs the entire UI.

On macOS, this actually makes it impossible to switch to another application and have it show its window on top of the frozen snippets dialog.

Not sure if this unfreezes when the analysis completes, as I've always forced binary ninja to quit when this happens.

As an aside, it would be nice if the snippets dialog weren't modal, but that probably relates to issue #10

snippets should not be loaded in headless mode

Currently, I observe that the snippets plugin is also loaded in headless mode. I observed this when I try to run the BN unit tests. While this is related to Vector35/binaryninja-api#1556, but it is different. Python plugins are too flexible and BN have no way of differentiating core/UI plugins, so the plugin itself should detect whether it is running in headless mode and decide whether it should load. binaryninja.core_ui_enabled() should fit the purpose.

tooltip for API reference

when completing an API, a tooltip or disabled background text should show the arguments and help-text

make non-modal

@mrexodia issued a PR recently to convert to a non-modal dialog and I finished out the change with the code required to re-calculate the UI context in instances where the snippet relies on scripting console shortcuts like current_function

Use new python magic variables api

As of recent dev versions, the magic variables in the python console are now defined with an api and don't have to be manually reimplemented. It would be useful if snippets also used this api so you could make use of all the same variables that the console does.

Note: don't actually push this until a stable release comes out, unless you also include a fallback implementation for older versions (like current stable) that don't have this api yet.

Feature Request: Duplicate snippet

It would be nice to be able to duplicate a snippet, as a quicker version of New > Copy > Paste > Rename, etc. UX could be alt drag or right click, but probably doesn't need its own button.

Punctuation Color Tweaks

I noticed a couple odd color selections, while using the snippets plugin:

  • Punctuation uses LinearDisassemblySeparatorColor
  • The background seems to be backgroundHighlightDarkColor (correct me if I'm wrong; I'm not good at QT)

While this usually works well, these colors aren't necessarily related to another and might not have a lot of contrast, depending on the theme.

I propose to:

  • Change punctuation to uncertainColor since that shouldn't draw the eye too much, but should still be visible
  • Change the background to graphBackgroundDarkColor or linearDisassemblyBlockColor, since every other color that's used in the snippet highlighting should be chosen by the theme to stand out against either of these.

Issue reopening snippet editor (and work around)

Open binary
Open snippet editor
Run Snippet
Close Snippet editor
Close binary
Open binary
Attempt to open snippet editor

[Default] Traceback (most recent call last):
[Default]   File "/home/jcase/.binaryninja/repositories/official/plugins/Vector35_snippets/__init__.py", line 764, in launchPlugin
[Default]     snippets.show()
[Default] RuntimeError: Internal C++ object (Snippets) already deleted.
def launchPlugin(context):
    global snippets
    if not snippets:
        snippets = Snippets(context, parent=context.widget)  
    snippets.show()

adding a try except to snippets.show, and recreating the object on exception fixes it for me (I acknowledge that is not going to be the correct fix)


def launchPlugin(context):
    global snippets
    if not snippets:
        snippets = Snippets(context, parent=context.widget)
    try:   
        snippets.show()
    except:
        snippets = Snippets(context, parent=context.widget)

Copy-pasting to snippet editor crashing whole BinaryNinja process.

Hi, i've got persistent crash when trying to paste text in snippet editor.
Managed to reproduce it only on macOS.

BinaryNinja version: 4.1.5071-dev Personal (41729337)
OS: macOS
OS version: 14.1

Steps to reproduce:

  1. Open Binary Ninja on macOS
  2. Open snippet editor
  3. Paste 50+ lines of text
  4. BN is crashed

Quick demo:
output

Here is backtrace of falling thread:

(lldb) thread backtrace
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
  * frame #0: 0x0000000188c6111c libsystem_kernel.dylib`__pthread_kill + 8
    frame #1: 0x0000000188c98cc0 libsystem_pthread.dylib`pthread_kill + 288
    frame #2: 0x0000000188ba8a40 libsystem_c.dylib`abort + 180
    frame #3: 0x00000001148c71f8 Python`fatal_error_exit + 16
    frame #4: 0x00000001148c7054 Python`fatal_error + 44
    frame #5: 0x00000001148ca044 Python`_Py_FatalErrorFunc + 56
    frame #6: 0x00000001147a9558 Python`none_dealloc + 28
    frame #7: 0x000000011486bcc4 Python`_PyEval_EvalFrameDefault + 25712
    frame #8: 0x0000000114863fc4 Python`_PyEval_Vector + 360
    frame #9: 0x0000000114740fa0 Python`method_vectorcall + 288
    frame #10: 0x000000011ea02198 QtGui.abi3.so`QSyntaxHighlighterWrapper::highlightBlock(QString const&) + 200
    frame #11: 0x0000000106695ce8 QtGui`QSyntaxHighlighterPrivate::reformatBlock(QTextBlock const&) + 128
    frame #12: 0x0000000106695c00 QtGui`QSyntaxHighlighterPrivate::reformatBlocks(int, int, int) + 360
    frame #13: 0x0000000104dff8f8 QtCore`void doActivate<false>(QObject*, int, void**) + 1396
    frame #14: 0x00000001066abbf4 QtGui`QTextDocument::contentsChange(int, int, int) + 76
    frame #15: 0x00000001066b0940 QtGui`QTextDocumentPrivate::finishEdit() + 124
    frame #16: 0x000000010669d91c QtGui`QTextCursor::insertFragment(QTextDocumentFragment const&) + 184
    frame #17: 0x0000000105f6c768 QtWidgets`QWidgetTextControl::insertFromMimeData(QMimeData const*) + 916
    frame #18: 0x0000000105f660a0 QtWidgets`QWidgetTextControlPrivate::keyPressEvent(QKeyEvent*) + 1596
    frame #19: 0x0000000105f65184 QtWidgets`QWidgetTextControl::processEvent(QEvent*, QPointF const&, QWidget*) + 108
    frame #20: 0x0000000105f3d204 QtWidgets`QPlainTextEdit::keyPressEvent(QKeyEvent*) + 476
    frame #21: 0x000000012009181c QtWidgets.abi3.so`Sbk_QPlainTextEditFunc_keyPressEvent(_object*, _object*) + 160
    frame #22: 0x00000001147a5104 Python`cfunction_vectorcall_O + 100
    frame #23: 0x00000001148731fc Python`call_function + 132
    frame #24: 0x000000011486b52c Python`_PyEval_EvalFrameDefault + 23768
    frame #25: 0x0000000114863fc4 Python`_PyEval_Vector + 360
    frame #26: 0x0000000114740fa0 Python`method_vectorcall + 288
    frame #27: 0x0000000120088424 QtWidgets.abi3.so`QPlainTextEditWrapper::keyPressEvent(QKeyEvent*) + 216
    frame #28: 0x0000000105db782c QtWidgets`QWidget::event(QEvent*) + 488
    frame #29: 0x0000000105e3aa98 QtWidgets`QFrame::event(QEvent*) + 56
    frame #30: 0x0000000105f3cbdc QtWidgets`QPlainTextEdit::event(QEvent*) + 632
    frame #31: 0x0000000105d6f16c QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 272
    frame #32: 0x0000000105d701c0 QtWidgets`QApplication::notify(QObject*, QEvent*) + 1036
    frame #33: 0x0000000104db5774 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 292
    frame #34: 0x0000000105dcb248 QtWidgets`QWidgetWindow::event(QEvent*) + 180
    frame #35: 0x0000000105d6f16c QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 272
    frame #36: 0x0000000105d6ffac QtWidgets`QApplication::notify(QObject*, QEvent*) + 504
    frame #37: 0x0000000104db5774 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 292
    frame #38: 0x000000010648bbd8 QtGui`QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) + 252
    frame #39: 0x00000001064e71a4 QtGui`QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 408
    frame #40: 0x00000001064e6d90 QtGui`QWindowSystemInterface::flushWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 524
    frame #41: 0x000000010430dcbc libqcocoa.dylib`-[QNSView(Keys) handleKeyEvent:] + 1832
    frame #42: 0x000000010430ebb4 libqcocoa.dylib`-[QNSView(Keys) keyDown:] + 92
    frame #43: 0x000000018c67a690 AppKit`-[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 480
    frame #44: 0x000000018c67a2dc AppKit`-[NSWindow(NSEventRouting) sendEvent:] + 284
    frame #45: 0x00000001043188dc libqcocoa.dylib`-[QNSPanel sendEvent:] + 860
    frame #46: 0x000000018cd23f00 AppKit`-[NSApplication(NSEventRouting) sendEvent:] + 1604
    frame #47: 0x00000001042b7510 libqcocoa.dylib`-[QNSApplication sendEvent:] + 76
    frame #48: 0x000000018c97609c AppKit`-[NSApplication _handleEvent:] + 60
    frame #49: 0x000000018c5420b0 AppKit`-[NSApplication run] + 512
    frame #50: 0x00000001042c35b8 libqcocoa.dylib`QCocoaEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 2124
    frame #51: 0x0000000104dbf458 QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 540
    frame #52: 0x0000000104db5e00 QtCore`QCoreApplication::exec() + 112
    frame #53: 0x00000001028a54b0 binaryninja`___lldb_unnamed_symbol6059 + 9952
    frame #54: 0x000000018891d0e0 dyld`start + 2360

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.