Slysven main development#24
Closed
ahmedcharles wants to merge 6 commits intoMudlet:developmentfrom
ahmedcharles:slysven_main_development
Closed
Slysven main development#24ahmedcharles wants to merge 6 commits intoMudlet:developmentfrom ahmedcharles:slysven_main_development
ahmedcharles wants to merge 6 commits intoMudlet:developmentfrom
ahmedcharles:slysven_main_development
Conversation
Member
|
I've commented on the iconic issues commit. |
Contributor
Author
|
I'm trying to work through these to make the commits (and the commit messages) smaller. So, best not to merge them yet. |
9888451 to
fdc4226
Compare
54ec9eb to
c035b0c
Compare
In four places (one a twin entry) the resource path was given as: ":/icons/icons/<icon>.png" when it should have been: ":/icons/<icon>.png", additionally as one of these uses was for a dialog box where it closed that box and committed any changes made with no option to cancel without undoing them I feel it would be more appropriate to use an "apply" icon (a green tick) rather than the originally intended "dialog-close" (a white cross on a red filled in circle). The main application was assigned the 16x16 icon but this appears blurry on the system task switching control (on at least Linux and Windows) platforms. Using the 48x48 icon appears much better and has been changed in mudlet::mudlet(). The central debug console was not assigned an icon so in the system task switcher it appeared as a plain icon (at least in Linux) - I have created a suitable icon (putting a quarter size bug on the bottom right quarter of the mudlet 48x48 icon). Similarly I have created one for the profile_preferences.ui form with a superimposed spanner and actually used the mudlet_notepad one that was already present but not used for the profile notes editor. This makes if a bit easy to tell which window is which when swapping between them by keyboard! When the profile_preferences.ui has the "Use Mudlet on a netbook" feature set, the icon that appears on the Main Toolbar to toggle in and out of "fullscreen" mode is the Oxygen "dialog-cancel" one, however there is a specific icon "view-fullscreen" which more closely relates to the function of this control, I have included it and changed to that one. As the control is actually a toggle I also have included the corresponding "view-restore" image as well which it might be possible to code to use... On the "replay" toolbar the "replay speed down" icon was spelt as "port.png" rather than "import.png" so the downward pointing double arrow was not shown, leaving an empty button in some situations. Within the Trigger Editor it has been commented by users that the icon labelled "save" and featuring a disc symbol does not actually write anything in a permanent manner and though the tooltip does warn of this I believe a more coherant use could be made by replacing some of the icons. Building on the top tool bar "item" and "group" use of a page and a folder respectively I have used the executing and error/stop sub-icons from the oxygen "printer-printing" and "printer-error" images and placed them on top of a page image to replace the tag-checkbox-checked amd tag-checkbox for the item enabled/disabled treeWidget icons, a second pair rendered in grey scale becomes the ancestor disabled pair and one with a "bug" to the same scale represents code that cannot be Lua compiled. Combining both executing and error sub-icons ontop of a pair of circular arrows on top of a page replaces the activate/deactive toolbar button and the circular executing sub-icon recoloured from green to orange with an arrow indicating the affixing of the sub-icon onto a page becomes the slightly previously misleading "save" (code) button next to it on the top toolbar. In the special case of a "circular" Alias a variant of this in red with a red cross over the arrow is used as it indicates that the "code" cannot be affixed to the "page", which does represent the fact that the page can't be saved until it is fixed. As a nice side effect, that extends the page metaphor, is the oxygen "document-import" and "document-export" icons that, particularly in the export case, emphasises that only the selected page (or folder) IS what is exported. Also, as we no longer use the oxygen "save" (disk) icon to write the code into the system, we can now use it for the save profile (replacing the double disc "save all" icon) which sits more nicely alongside the "save as" (disc with a pencil writing a new label) icon that is already used. Finally, the delete item used the oxygen "edit-delete-shred" image but that uses a "crumpled" page which although perhaps appropriate does look visually at odds with the clean straight edges of the other "page" icons. As there didn't seem to be a "document-delete" image in the Oxygen set I had to make one to match. Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
In four places (one a twin entry) the resource path was given as: ":/icons/icons/<icon>.png" when it should have been: ":/icons/<icon>.png", additionally as one of these uses was for a dialog box where it closed that box and committed any changes made with no option to cancel without undoing them I feel it would be more appropriate to use an "apply" icon (a green tick) rather than the originally intended "dialog-close" (a white cross on a red filled in circle). A missing "else" in dlgTriggerEditor::saveAlias() meant that the grey check-box indicating an alias that would be active if the parent were to be enabled was always seen even if it was actually active. The main application was assigned the 16x16 icon but this appears blurry on the system task switching control (on at least Linux and Windows) platforms. Using the 48x48 icon appears much better and has been changed in mudlet::mudlet(). The central debug console was not assigned an icon so in the system task switcher it appeared as a plain icon (at least in Linux) - I have created a suitable icon (putting a quarter size bug on the bottom right quarter of the mudlet 48x48 icon). Similarly I have created one for the profile_preferences.ui form with a superimposed spanner and actually used the mudlet_notepad one that was already present but not used for the profile notes editor. This makes if a bit easy to tell which window is which when swapping between them by keyboard! When the profile_preferences.ui has the "Use Mudlet on a netbook" feature set, the icon that appears on the Main Toolbar to toggle in and out of "fullscreen" mode is the Oxygen "dialog-cancel" one, however there is a specific icon "view-fullscreen" which more closely relates to the function of this control, I have included it and changed to that one. As the control is actually a toggle I also have included the corresponding "view-restore" image as well which it might be possible to code to use... On the "replay" toolbar the "replay speed down" icon was spelt as "port.png" rather than "import.png" so the downward pointing double arrow was not shown, leaving an empty button in some situations. In the TConsole constructor, the tool-tip "next result" is supplied to both the mpBufferSearchUp and Down controls. Also, the Oxygen Icon set has specific go-up-search and go-down-search images which seem particularly suited to these functions rather than the green double arrow icons that have been renamed "import" and "export" for Mudlet, I changed the code to use the search ones. Nearby on-screen and in code the button to toggle time-stamps on and off is the generic "information" icon, I have replaced this with one I made from the Oxygen "format-list-ordered" image and replaced the single blue integers to the left of the lines that indicate text with orange "0:00:0#" to more closely model Mudlet's use, it is called "timestamped_lines". The code that adjusts the Main Toolbar (and corresponding Toolbars in the "Trigger" editor) Icons sizes and the treeWidget Icons in the latter only, only updates the Trigger Editor for THAT Profile Active when the Profile Preferences dialog is activated - however these are global settings and changes should be sent to ALL profiles' Trigger Editors if more than one profile is open. Also the initialisation code in the constructor for the Trigger Editor did not respect the design decision to include the Icon Title under the Icon Image for large size icons. By using the Qt Signal/Slot system I have re-coded this section to update all profiles when the global icon sizes are changed in ANY of them. Within the Trigger Editor it has been commented by users that the icon labelled "save" and featuring a disc symbol does not actually write anything in a permanent manner and though the tooltip does warn of this I believe a more coherant use could be made by replacing some of the icons. Building on the top tool bar "item" and "group" use of a page and a folder respectively I have used the executing and error/stop sub-icons from the oxygen "printer-printing" and "printer-error" images and placed them on top of a page image to replace the tag-checkbox-checked amd tag-checkbox for the item enabled/disabled treeWidget icons, a second pair rendered in grey scale becomes the ancestor disabled pair and one with a "bug" to the same scale represents code that cannot be Lua compiled. Combining both executing and error sub-icons ontop of a pair of circular arrows on top of a page replaces the activate/deactive toolbar button and the circular executing sub-icon recoloured from green to orange with an arrow indicating the affixing of the sub-icon onto a page becomes the slightly previously misleading "save" (code) button next to it on the top toolbar. In the special case of a "circular" Alias a variant of this in red with a red cross over the arrow is used as it indicates that the "code" cannot be affixed to the "page", which does represent the fact that the page can't be saved until it is fixed. As a nice side effect, that extends the page metaphor, is the oxygen "document-import" and "document-export" icons that, particularly in the export case, emphasises that only the selected page (or folder) IS what is exported. Also, as we no longer use the oxygen "save" (disk) icon to write the code into the system, we can now use it for the save profile (replacing the double disc "save all" icon) which sits more nicely alongside the "save as" (disc with a pencil writing a new label) icon that is already used. Finally, the delete item used the oxygen "edit-delete-shred" image but that uses a "crumpled" page which although perhaps appropriate does look visually at odds with the clean straight edges of the other "page" icons. As there didn't seem to be a "document-delete" image in the Oxygen set I had to make one to match. Finally(!) in most places where an Icon is specified a fixed QString that refers to the location in the resource file is needed. QStringLiteral() is a macro that allows the implict conversion from const char to a QString to be done at compile time rather than run-time. Also the result can be stored in read only memory. Also it helps to explicitly mark a string that is NOT to be translated by tr() which will help in the future if we ever attempt to translate Mudlet into languages other than en-US (yippee - as an Englishman I won't have to put up with color rather than colour everywhere!) If anyone is brave enough to set the Q_NO_CAST_FROM_ASCII/Q_NO_CAST_TO_ASCII macros they will get to see how many strings will have to be either wrapped in QStringLiteral or tr() - not counting error messages in the Lua stuff in std::string form that will have to be redone into QString until the point of conversion to/from utf-8 into or out of the Lua subsystem so that it can also be translated!!! Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
…als. Though presently the argument supplied to the modified/renamed icon size setting: dlgTriggerEditor::slot_setToolbarIconSize( int ) and the new: dlgTriggerEditor::slot_setTreeWidgetIconSize( int ) ARE the globals used to store this information, this is not implicit in their declared purpose, so it is best to actually use the supplied value! Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
The Window Icons were not being used for profile_preferences dialog or for the Central Debug console. In the former it transpires the icon was loaded from a relative file reference and not from the resource file (and also for the icon for mudlet_custom_exit_properties) file; and in the latter it was being set by code from the mudlet class which just did not work - as it is being used as the central widget inside a QMainWindow widget and THAT is what has to have the icon set! Also, fix the fact that the profile preference was not opened in the first tab but the third. Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
Member
|
I think this should be put in to a back room for the moment so that we can pull it out and dust it off (or dissect out useful parts) in the future... |
This was referenced Aug 30, 2025
vadi2
added a commit
that referenced
this pull request
Nov 26, 2025
…rocessing (#8571) <!-- Keep the title short & concise so anyone non-technical can understand it, the title appears in PTB changelogs --> #### Brief overview of PR changes/additions Fix: heap-use-after-free when cleanup runs during alias/trigger/key processing #### Motivation for adding to Mudlet Fixes crash when running #8559 (comment) benchmark on Linux. #### Other info (issues closed, discussion etc) ==617553==ERROR: AddressSanitizer: heap-use-after-free on address 0x51200086e6d0 at pc 0x589b650367f6 bp 0x7ffc44dbc700 sp 0x7ffc44dbc6f8 READ of size 8 at 0x51200086e6d0 thread T0 #0 0x589b650367f5 in Tree<TAlias>::isActive() const (/home/vadi/Programs/Mudlet/build/src/mudlet+0xe8a7f5) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #1 0x589b65d81408 in TAlias::match(QString const&) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bd5408) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #2 0x589b6560c156 in AliasUnit::processDataStream(QString const&) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1460156) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #3 0x589b65c872b4 in Host::send(QString, bool, bool) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1adb2b4) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #4 0x589b65d96517 in TCommandLine::enterCommand(QKeyEvent*) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bea517) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #5 0x589b65d93095 in TCommandLine::event(QEvent*) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1be7095) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #6 0x7ac668391c8a in QApplicationPrivate::notify_helper(QObject*, QEvent*) /home/qt/work/qt/qtbase/src/widgets/kernel/qapplication.cpp:3307:31 #7 0x7ac66839b2f0 in QApplication::notify(QObject*, QEvent*) /home/qt/work/qt/qtbase/src/widgets/kernel/qapplication.cpp:2725:39 #8 0x7ac668b83f7f in QCoreApplication::notifyInternal2(QObject*, QEvent*) /home/qt/work/qt/qtbase/src/corelib/kernel/qcoreapplication.cpp:1109:24 #9 0x7ac66840cc0b in QWidgetWindow::event(QEvent*) /home/qt/work/qt/qtbase/src/widgets/kernel/qwidgetwindow.cpp:285:23 #10 0x7ac668391c8a in QApplicationPrivate::notify_helper(QObject*, QEvent*) /home/qt/work/qt/qtbase/src/widgets/kernel/qapplication.cpp:3307:31 #11 0x7ac668b83f7f in QCoreApplication::notifyInternal2(QObject*, QEvent*) /home/qt/work/qt/qtbase/src/corelib/kernel/qcoreapplication.cpp:1109:24 #12 0x7ac6677ee8e2 in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) /home/qt/work/qt/qtbase/src/gui/kernel/qguiapplication.cpp:2609:46 #13 0x7ac655cf9a04 in QIBusPlatformInputContext::filterEventFinished(QDBusPendingCallWatcher*) /home/qt/work/qt/qtbase/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp:523:57 #14 0x7ac668be8b74 in QtPrivate::QSlotObjectBase::call(QObject*, void**) /home/qt/work/qt/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461:57 #15 0x7ac668be8b74 in void doActivate<false>(QObject*, int, void**) /home/qt/work/qt/qtbase/src/corelib/kernel/qobject.cpp:4255:30 #16 0x7ac6671e5142 in void QMetaObject::activate<void, QDBusPendingCallWatcher*>(QObject*, QMetaObject const*, int, void*, QDBusPendingCallWatcher* const&) /home/qt/work/qt/qtbase/src/corelib/kernel/qobjectdefs.h:319:17 #17 0x7ac6671e5142 in QDBusPendingCallWatcher::finished(QDBusPendingCallWatcher*) /home/qt/work/qt/qtbase_build/src/dbus/DBus_autogen/include/moc_qdbuspendingcall.cpp:137:32 #18 0x7ac668bdd56b in QObject::event(QEvent*) /home/qt/work/qt/qtbase/src/corelib/kernel/qobject.cpp:1411:31 #19 0x7ac668391c8a in QApplicationPrivate::notify_helper(QObject*, QEvent*) /home/qt/work/qt/qtbase/src/widgets/kernel/qapplication.cpp:3307:31 #20 0x7ac668b83f7f in QCoreApplication::notifyInternal2(QObject*, QEvent*) /home/qt/work/qt/qtbase/src/corelib/kernel/qcoreapplication.cpp:1109:24 #21 0x7ac668b879e4 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) /home/qt/work/qt/qtbase/src/corelib/kernel/qcoreapplication.cpp:1904:36 #22 0x7ac668e7d416 in postEventSourceDispatch /home/qt/work/qt/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:246:39 #23 0x7ac6667145c4 (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x5d5c4) (BuildId: 1eb6131419edb83b2178b682829a6913cf682d75) #24 0x7ac666773736 (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0xbc736) (BuildId: 1eb6131419edb83b2178b682829a6913cf682d75) #25 0x7ac666713a62 in g_main_context_iteration (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x5ca62) (BuildId: 1eb6131419edb83b2178b682829a6913cf682d75) #26 0x7ac668e7caad in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) /home/qt/work/qt/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399:43 #27 0x7ac668b9002a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) /home/qt/work/qt/qtbase/src/corelib/kernel/qeventloop.cpp:186:22 #28 0x7ac668b8ba59 in QCoreApplication::exec() /home/qt/work/qt/qtbase/src/corelib/kernel/qcoreapplication.cpp:1452:36 #29 0x589b64ab0675 in main (/home/vadi/Programs/Mudlet/build/src/mudlet+0x904675) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #30 0x7ac66602a1c9 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16 #31 0x7ac66602a28a in __libc_start_main csu/../csu/libc-start.c:360:3 #32 0x589b649c1d04 in _start (/home/vadi/Programs/Mudlet/build/src/mudlet+0x815d04) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) 0x51200086e6d0 is located 16 bytes inside of 296-byte region [0x51200086e6c0,0x51200086e7e8) freed by thread T0 here: #0 0x589b64a9b9f1 in operator delete(void*) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x8ef9f1) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #1 0x589b65d80711 in TAlias::~TAlias() (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bd4711) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #2 0x589b6560eefc in AliasUnit::doCleanup() (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1462efc) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #3 0x589b65c8e88d in Host::incomingStreamProcessor(QString const&, int) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1ae288d) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #4 0x589b651b73b5 in TMainConsole::runTriggers(int) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x100b3b5) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #5 0x589b64e39c4b in TBuffer::commitLine(char, unsigned long&) (/home/vadi/Programs/Mudlet/build/src/mudlet+0xc8dc4b) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #6 0x589b64e28d4e in TBuffer::translateToPlainText(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, bool) (/home/vadi/Programs/Mudlet/build/src/mudlet+0xc7cd4e) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #7 0x589b651b638d in TMainConsole::printOnDisplay(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, bool) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x100a38d) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #8 0x589b64f9ed5b in TLuaInterpreter::feedTriggers(lua_State*) (/home/vadi/Programs/Mudlet/build/src/mudlet+0xdf2d5b) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #9 0x7ac66942ffa0 in luaD_precall /build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:320:10 #10 0x7ac66943ad7a in luaV_execute /build/lua5.1-rMDsVj/lua5.1-5.1.5/src/lvm.c:591:17 #11 0x7ac66942e96c in luaD_call /build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:378:5 #12 0x7ac66942af70 in luaD_rawrunprotected /build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:116:3 #13 0x7ac66942bb94 in luaD_pcall /build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:464:12 #14 0x7ac66942bce0 in lua_pcall /build/lua5.1-rMDsVj/lua5.1-5.1.5/src/lapi.c:821:12 #15 0x589b64fd65f1 in TLuaInterpreter::call(QString const&, QString const&, bool) (/home/vadi/Programs/Mudlet/build/src/mudlet+0xe2a5f1) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #16 0x589b65d84d31 in TAlias::execute() (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bd8d31) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #17 0x589b65d84577 in TAlias::match(QString const&) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bd8577) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #18 0x589b6560c156 in AliasUnit::processDataStream(QString const&) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1460156) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #19 0x589b65c872b4 in Host::send(QString, bool, bool) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1adb2b4) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #20 0x589b65d96517 in TCommandLine::enterCommand(QKeyEvent*) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bea517) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #21 0x589b65d93095 in TCommandLine::event(QEvent*) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1be7095) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #22 0x7ac668391c8a in QApplicationPrivate::notify_helper(QObject*, QEvent*) /home/qt/work/qt/qtbase/src/widgets/kernel/qapplication.cpp:3307:31 previously allocated by thread T0 here: #0 0x589b64a9b171 in operator new(unsigned long) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x8ef171) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #1 0x589b6500f595 in TLuaInterpreter::startTempAlias(QString const&, QString const&) (/home/vadi/Programs/Mudlet/build/src/mudlet+0xe63595) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #2 0x589b6512c41d in TLuaInterpreter::tempAlias(lua_State*) (/home/vadi/Programs/Mudlet/build/src/mudlet+0xf8041d) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #3 0x7ac66942ffa0 in luaD_precall /build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:320:10 #4 0x7ac66943ad7a in luaV_execute /build/lua5.1-rMDsVj/lua5.1-5.1.5/src/lvm.c:591:17 #5 0x7ac66942e96c in luaD_call /build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:378:5 #6 0x7ac66942af70 in luaD_rawrunprotected /build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:116:3 #7 0x7ac66942bb94 in luaD_pcall /build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:464:12 #8 0x7ac66942bce0 in lua_pcall /build/lua5.1-rMDsVj/lua5.1-5.1.5/src/lapi.c:821:12 #9 0x589b64fd65f1 in TLuaInterpreter::call(QString const&, QString const&, bool) (/home/vadi/Programs/Mudlet/build/src/mudlet+0xe2a5f1) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #10 0x589b65d84d31 in TAlias::execute() (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bd8d31) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #11 0x589b65d84577 in TAlias::match(QString const&) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bd8577) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #12 0x589b6560c156 in AliasUnit::processDataStream(QString const&) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1460156) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #13 0x589b65c872b4 in Host::send(QString, bool, bool) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1adb2b4) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #14 0x589b65d96517 in TCommandLine::enterCommand(QKeyEvent*) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bea517) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #15 0x589b65d93095 in TCommandLine::event(QEvent*) (/home/vadi/Programs/Mudlet/build/src/mudlet+0x1be7095) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) #16 0x7ac668391c8a in QApplicationPrivate::notify_helper(QObject*, QEvent*) /home/qt/work/qt/qtbase/src/widgets/kernel/qapplication.cpp:3307:31 SUMMARY: AddressSanitizer: heap-use-after-free (/home/vadi/Programs/Mudlet/build/src/mudlet+0xe8a7f5) (BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) in Tree<TAlias>::isActive() const Shadow bytes around the buggy address: 0x51200086e400: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd 0x51200086e480: fd fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa 0x51200086e500: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd 0x51200086e580: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd 0x51200086e600: fd fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa =>0x51200086e680: fa fa fa fa fa fa fa fa fd fd[fd]fd fd fd fd fd 0x51200086e700: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd 0x51200086e780: fd fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa 0x51200086e800: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd 0x51200086e880: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd 0x51200086e900: fd fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb ==617553==ABORTING Co-authored-by: Vadim Peretokin <vadi2@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stephen's commits, only with a rebase. The content is the same.