{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":76978254,"defaultBranch":"master","name":"hotspot","ownerLogin":"KDAB","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-12-20T17:38:04.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/402842?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1726592018.0","currentOid":""},"activityList":{"items":[{"before":"cbab6da5008fbc4a71a92612ee86930e939952de","after":"aac8c8f8de020d51627fab6f52004468c82863f9","ref":"refs/heads/open-perf-files","pushedAt":"2024-09-26T13:31:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"lievenhey","name":null,"path":"/lievenhey","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/82457690?s=80&v=4"},"commit":{"message":"feat: open more perf files\n\nCurrently `hotspot dir` only opens perf.data files. This patch extends\nthis to perf.data, perf.data.old and perf.data.perfparser files.","shortMessageHtmlLink":"feat: open more perf files"}},{"before":"4bcf805e84857187af43ba7502bb1c9cbdc7cfc1","after":"cbab6da5008fbc4a71a92612ee86930e939952de","ref":"refs/heads/open-perf-files","pushedAt":"2024-09-26T12:27:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"lievenhey","name":null,"path":"/lievenhey","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/82457690?s=80&v=4"},"commit":{"message":"feat: open more perf files\n\nCurrently `hotspot dir` only opens perf.data files. This patch extends\nthis to perf.data, perf.data.old and perf.data.perfparser files.","shortMessageHtmlLink":"feat: open more perf files"}},{"before":"034b188b3dbf17f1fff56f7dc832d7c88ce4ad7c","after":"8d006ea0924f2aab957cefbbe8ac71c2c5cf6591","ref":"refs/heads/improve-compressed-files","pushedAt":"2024-09-17T17:13:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"lievenhey","name":null,"path":"/lievenhey","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/82457690?s=80&v=4"},"commit":{"message":"test: add test for archive function","shortMessageHtmlLink":"test: add test for archive function"}},{"before":"cda87b4d1c5c01cbcada617394720a3f927e9a5b","after":"034b188b3dbf17f1fff56f7dc832d7c88ce4ad7c","ref":"refs/heads/improve-compressed-files","pushedAt":"2024-09-17T17:05:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"lievenhey","name":null,"path":"/lievenhey","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/82457690?s=80&v=4"},"commit":{"message":"test: add test for archive function","shortMessageHtmlLink":"test: add test for archive function"}},{"before":"bfadfbfa3e1d1669b7de6bcf0f519495e20c1884","after":"cda87b4d1c5c01cbcada617394720a3f927e9a5b","ref":"refs/heads/improve-compressed-files","pushedAt":"2024-09-17T16:59:00.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"lievenhey","name":null,"path":"/lievenhey","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/82457690?s=80&v=4"},"commit":{"message":"test: add test for archive function","shortMessageHtmlLink":"test: add test for archive function"}},{"before":null,"after":"bfadfbfa3e1d1669b7de6bcf0f519495e20c1884","ref":"refs/heads/improve-compressed-files","pushedAt":"2024-09-17T16:53:38.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"lievenhey","name":null,"path":"/lievenhey","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/82457690?s=80&v=4"},"commit":{"message":"test: add test for archive function","shortMessageHtmlLink":"test: add test for archive function"}},{"before":null,"after":"4bcf805e84857187af43ba7502bb1c9cbdc7cfc1","ref":"refs/heads/open-perf-files","pushedAt":"2024-09-17T11:23:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"lievenhey","name":null,"path":"/lievenhey","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/82457690?s=80&v=4"},"commit":{"message":"feat: open more perf files\n\nCurrently `hotspot dir` only opens perf.data files. This patch extends\nthis to perf.data, perf.data.old and perf.data.perfparser files.","shortMessageHtmlLink":"feat: open more perf files"}},{"before":"61eeef78f91108efb354da898b9ee2b708a607a3","after":"a1fe6f07e20fbae6722ac76607e3c47affacc81c","ref":"refs/heads/complex-search","pushedAt":"2024-09-17T10:51:09.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"lievenhey","name":null,"path":"/lievenhey","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/82457690?s=80&v=4"},"commit":{"message":"feat: support regex search\n\nSince we use QSortFilterProxyModel we get this for free.\nThis patch adds support for regex search by not escaping the search term\nif it is prefix with %.\nFor the flamegraph there is a custom implementation, which changes the\ncurrent QString::contains to a QRegularExpression::match call.\n\nCloses: #666","shortMessageHtmlLink":"feat: support regex search"}},{"before":"765c49e08aa132ec8642ca514dd92c99b0426924","after":"61eeef78f91108efb354da898b9ee2b708a607a3","ref":"refs/heads/complex-search","pushedAt":"2024-09-17T10:49:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"lievenhey","name":null,"path":"/lievenhey","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/82457690?s=80&v=4"},"commit":{"message":"feat: support regex search\n\nSince we use QSortFilterProxyModel we get this for free.\nThis patch adds support for regex search by not escaping the search term\nif it is prefix with %.\nFor the flamegraph there is a custom implementation, which changes the\ncurrent QString::contains to a QRegularExpression::match call.\n\nCloses: #666","shortMessageHtmlLink":"feat: support regex search"}},{"before":"5851dd09b5963dbee1173e380128b88a457209bd","after":"765c49e08aa132ec8642ca514dd92c99b0426924","ref":"refs/heads/complex-search","pushedAt":"2024-09-17T09:52:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"lievenhey","name":null,"path":"/lievenhey","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/82457690?s=80&v=4"},"commit":{"message":"feat: support regex search\n\nSince we use QSortFilterProxyModel we get this for free.\nThis patch adds support for regex search by not escaping the search term\nif it is prefix with %.\nFor the flamegraph there is a custom implementation, which changes the\ncurrent QString::contains to a QRegularExpression::match call.\n\nCloses: #666","shortMessageHtmlLink":"feat: support regex search"}},{"before":null,"after":"5851dd09b5963dbee1173e380128b88a457209bd","ref":"refs/heads/complex-search","pushedAt":"2024-09-17T09:51:30.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"lievenhey","name":null,"path":"/lievenhey","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/82457690?s=80&v=4"},"commit":{"message":"feat: support regex search\n\nSince we use QSortFilterProxyModel we get this for free.\nThis patch adds support for regex search by not escaping the search term\nif it is prefix with %.\nFor the flamegraph there is a custom implementation, which changes the\ncurrent QString::contains to a QRegularExpression::match call.\n\nCloses: #508","shortMessageHtmlLink":"feat: support regex search"}},{"before":"596956d3e1c343200f84dcbe57730e2017b13111","after":"bd17bf39d881ebc5a554941b79f36eca3cdda0a6","ref":"refs/heads/release-please--branches--master","pushedAt":"2024-09-05T07:48:34.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"chore(master): release 1.6.0","shortMessageHtmlLink":"chore(master): release 1.6.0"}},{"before":"f326ef0d2f651d45ceff36050039cbccb2eac6c7","after":null,"ref":"refs/tags/continuous","pushedAt":"2024-09-05T07:47:50.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"}},{"before":"c3e1682a6ea49770107249836b5baf6ca47ede25","after":null,"ref":"refs/heads/work/inline-assembly-cost","pushedAt":"2024-09-05T07:45:18.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"milianw","name":"Milian Wolff","path":"/milianw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57207?s=80&v=4"}},{"before":"f326ef0d2f651d45ceff36050039cbccb2eac6c7","after":"36bedef070d5b846d2be416e96a860220904e14a","ref":"refs/heads/master","pushedAt":"2024-09-05T07:45:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"milianw","name":"Milian Wolff","path":"/milianw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57207?s=80&v=4"},"commit":{"message":"fix: correct cost attribution of inline frames in disassembly view\n\nPreviously, we put the cost of an inline frame into a container\nindexed by the inline symbol. But during disassembly, we never get\nto query that data again, since we cannot disassemble an inline frame.\nInstead, we need to be able to query the cost for arbitrary binary\noffsets, independent of their originating symbol.\n\nThe patch here achieves this by lifting the OffsetLocationCostMap out\nof the CallerCalleeEntryMap into CallerCalleeResults, but mapped by\nthe binary name. This way we can efficiently store and lookup the data\nof a given offset within a specific binary during disassembly, which\nallows us to show the cost for inlined code in the disassembly view.\n\nFixes: https://github.com/KDAB/hotspot/issues/671","shortMessageHtmlLink":"fix: correct cost attribution of inline frames in disassembly view"}},{"before":"bdd114cdcc9a1fb34a364c7915478e0d97c25372","after":"596956d3e1c343200f84dcbe57730e2017b13111","ref":"refs/heads/release-please--branches--master","pushedAt":"2024-09-02T08:25:52.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"chore(master): release 1.6.0","shortMessageHtmlLink":"chore(master): release 1.6.0"}},{"before":"221d60e92f3ca2a5fe0530b1ec48b71f86112984","after":null,"ref":"refs/tags/continuous","pushedAt":"2024-09-02T08:25:07.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"}},{"before":"c920235fee381b8260314e0ead3daffe73b6f2f1","after":null,"ref":"refs/heads/work/more-branch-vis-chars","pushedAt":"2024-09-02T08:22:38.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"milianw","name":"Milian Wolff","path":"/milianw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57207?s=80&v=4"}},{"before":"221d60e92f3ca2a5fe0530b1ec48b71f86112984","after":"f326ef0d2f651d45ceff36050039cbccb2eac6c7","ref":"refs/heads/master","pushedAt":"2024-09-02T08:22:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"milianw","name":"Milian Wolff","path":"/milianw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57207?s=80&v=4"},"commit":{"message":"fix: also support ' and , as branch visualization characters\n\nMy objdump from arch uses these chars now, so let's support them too","shortMessageHtmlLink":"fix: also support ' and , as branch visualization characters"}},{"before":null,"after":"c920235fee381b8260314e0ead3daffe73b6f2f1","ref":"refs/heads/work/more-branch-vis-chars","pushedAt":"2024-09-02T08:10:52.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"milianw","name":"Milian Wolff","path":"/milianw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57207?s=80&v=4"},"commit":{"message":"fix: also support ' and , as branch visualization characters\n\nMy objdump from arch uses these chars now, so let's support them too","shortMessageHtmlLink":"fix: also support ' and , as branch visualization characters"}},{"before":"8e20e2551415291b76693e95814d69734fa8e039","after":"c3e1682a6ea49770107249836b5baf6ca47ede25","ref":"refs/heads/work/inline-assembly-cost","pushedAt":"2024-09-02T07:46:08.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"milianw","name":"Milian Wolff","path":"/milianw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57207?s=80&v=4"},"commit":{"message":"fix: correct cost attribution of inline frames in disassembly view\n\nPreviously, we put the cost of an inline frame into a container\nindexed by the inline symbol. But during disassembly, we never get\nto query that data again, since we cannot disassemble an inline frame.\nInstead, we need to be able to query the cost for arbitrary binary\noffsets, independent of their originating symbol.\n\nThe patch here achieves this by lifting the OffsetLocationCostMap out\nof the CallerCalleeEntryMap into CallerCalleeResults, but mapped by\nthe binary name. This way we can efficiently store and lookup the data\nof a given offset within a specific binary during disassembly, which\nallows us to show the cost for inlined code in the disassembly view.\n\nFixes: https://github.com/KDAB/hotspot/issues/671","shortMessageHtmlLink":"fix: correct cost attribution of inline frames in disassembly view"}},{"before":null,"after":"8e20e2551415291b76693e95814d69734fa8e039","ref":"refs/heads/work/inline-assembly-cost","pushedAt":"2024-09-02T07:44:23.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"milianw","name":"Milian Wolff","path":"/milianw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57207?s=80&v=4"},"commit":{"message":"Fix cost attribution of inline frames in disassembly view\n\nPreviously, we put the cost of an inline frame into a container\nindexed by the inline symbol. But during disassembly, we never get\nto query that data again, since we cannot disassemble an inline frame.\nInstead, we need to be able to query the cost for arbitrary binary\noffsets, independent of their originating symbol.\n\nThe patch here achieves this by lifting the OffsetLocationCostMap out\nof the CallerCalleeEntryMap into CallerCalleeResults, but mapped by\nthe binary name. This way we can efficiently store and lookup the data\nof a given offset within a specific binary during disassembly, which\nallows us to show the cost for inlined code in the disassembly view.\n\nFixes: https://github.com/KDAB/hotspot/issues/671","shortMessageHtmlLink":"Fix cost attribution of inline frames in disassembly view"}},{"before":"3e38f78853dd0754e637a369374c10fa8e3afe84","after":"5e7807105e6a85c8f3b8b24e0dc913e35dcdc837","ref":"refs/heads/work/almalinux-appimages","pushedAt":"2024-07-15T07:21:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"milianw","name":"Milian Wolff","path":"/milianw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57207?s=80&v=4"},"commit":{"message":"Wipe the appdir folder before install\n\nThis ensures we don't have old artifacts in our appimages","shortMessageHtmlLink":"Wipe the appdir folder before install"}},{"before":null,"after":"3e38f78853dd0754e637a369374c10fa8e3afe84","ref":"refs/heads/work/almalinux-appimages","pushedAt":"2024-07-14T19:30:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"milianw","name":"Milian Wolff","path":"/milianw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57207?s=80&v=4"},"commit":{"message":"Use almalinux8 for the appimage generation\n\nUpdate our dependencies accordingly","shortMessageHtmlLink":"Use almalinux8 for the appimage generation"}},{"before":"f7459b78c49e8c89546c43de90552f25cf005bc3","after":"bdd114cdcc9a1fb34a364c7915478e0d97c25372","ref":"refs/heads/release-please--branches--master","pushedAt":"2024-06-17T06:27:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"chore(master): release 1.6.0","shortMessageHtmlLink":"chore(master): release 1.6.0"}},{"before":"d5d9cd48aabf2cc7ef0e36363d3227f215b164f9","after":null,"ref":"refs/tags/continuous","pushedAt":"2024-06-17T06:26:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"}},{"before":"5edfabc12eb74ecce410df788ec5c0e265759a36","after":null,"ref":"refs/heads/fix-crash-on-load","pushedAt":"2024-06-17T06:24:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"milianw","name":"Milian Wolff","path":"/milianw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57207?s=80&v=4"}},{"before":"d5d9cd48aabf2cc7ef0e36363d3227f215b164f9","after":"221d60e92f3ca2a5fe0530b1ec48b71f86112984","ref":"refs/heads/master","pushedAt":"2024-06-17T06:24:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"milianw","name":"Milian Wolff","path":"/milianw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57207?s=80&v=4"},"commit":{"message":"fix: crash if hotspot is closed while loading a file\n\nThe crash is caused because the destructor is called in one thread while\nother threads still execute. This patch waits in the destructor till all\nthreads terminate.\n\nBacktrace:\n==91946==ERROR: AddressSanitizer: heap-use-after-free on address 0x513000001bb9 at pc 0x5555566c3173 bp 0x7fffca5fe900 sp 0x7fffca5fe8f0\nREAD of size 1 at 0x513000001bb9 thread T25 (GlobalQueue[06])\n #0 0x5555566c3172 in std::__atomic_base::load(std::memory_order) const /usr/include/c++/14.1.1/bits/atomic_base.h:501\n #1 0x5555566c3172 in std::atomic::operator bool() const /usr/include/c++/14.1.1/atomic:92\n #2 0x55555667846a in operator() /tmp/hotspot/src/parsers/perf/perfparser.cpp:1684\n #3 0x5555566c10bc in call /usr/include/qt/QtCore/qobjectdefs_impl.h:146\n #4 0x5555566b9353 in call, void> /usr/include/qt/QtCore/qobjectdefs_impl.h:256\n #5 0x5555566b1239 in impl /usr/include/qt/QtCore/qobjectdefs_impl.h:443\n #6 0x7ffff46df99d (/usr/lib/libQt5Core.so.5+0x2df99d) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #7 0x7ffff4630793 in QProcess::errorOccurred(QProcess::ProcessError) (/usr/lib/libQt5Core.so.5+0x230793) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #8 0x7ffff462c846 (/usr/lib/libQt5Core.so.5+0x22c846) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #9 0x7ffff4630f6c (/usr/lib/libQt5Core.so.5+0x230f6c) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #10 0x7ffff46df961 (/usr/lib/libQt5Core.so.5+0x2df961) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #11 0x7ffff46e096d in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (/usr/lib/libQt5Core.so.5+0x2e096d) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #12 0x7ffff46e0aa4 in QSocketNotifier::event(QEvent*) (/usr/lib/libQt5Core.so.5+0x2e0aa4) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #13 0x7ffff5d56330 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (/usr/lib/libQt5Widgets.so.5+0x156330) (BuildId: 254b52226c3f04da1b93d83e86adb3e3cffb6f76)\n #14 0x7ffff46ab967 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (/usr/lib/libQt5Core.so.5+0x2ab967) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #15 0x7ffff46f8f0d (/usr/lib/libQt5Core.so.5+0x2f8f0d) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #16 0x7ffff2314a88 (/usr/lib/libglib-2.0.so.0+0x5ca88) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)\n #17 0x7ffff23769b6 (/usr/lib/libglib-2.0.so.0+0xbe9b6) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)\n #18 0x7ffff2313f94 in g_main_context_iteration (/usr/lib/libglib-2.0.so.0+0x5bf94) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)\n #19 0x7ffff46fa27e in QEventDispatcherGlib::processEvents(QFlags) (/usr/lib/libQt5Core.so.5+0x2fa27e) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #20 0x7ffff46a372b in QEventLoop::exec(QFlags) (/usr/lib/libQt5Core.so.5+0x2a372b) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #21 0x55555667a9c9 in operator() /tmp/hotspot/src/parsers/perf/perfparser.cpp:1703\n #22 0x5555566c2f6f in run /usr/include/KF5/ThreadWeaver/threadweaver/lambda.h:30\n #23 0x7ffff7f5f5ad in ThreadWeaver::Executor::run(QSharedPointer const&, ThreadWeaver::Thread*) (/usr/lib/libKF5ThreadWeaver.so.5+0x125ad) (BuildId: 200cb669eff8ffb9ace9b7b396df6403668\n5aed2)\n #24 0x7ffff7f604f5 in ThreadWeaver::Job::execute(QSharedPointer const&, ThreadWeaver::Thread*) (/usr/lib/libKF5ThreadWeaver.so.5+0x134f5) (BuildId: 200cb669eff8ffb9ace9b7b396df64036685\naed2)\n #25 0x7ffff7f63f01 in ThreadWeaver::Thread::run() (/usr/lib/libKF5ThreadWeaver.so.5+0x16f01) (BuildId: 200cb669eff8ffb9ace9b7b396df64036685aed2)\n #26 0x7ffff44f258a (/usr/lib/libQt5Core.so.5+0xf258a) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #27 0x7ffff785cc79 in asan_thread_start /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_interceptors.cpp:234\n #28 0x7ffff36a6dec (/usr/lib/libc.so.6+0x92dec) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)\n #29 0x7ffff372a0db (/usr/lib/libc.so.6+0x1160db) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)\n\n0x513000001bb9 is located 313 bytes inside of 336-byte region [0x513000001a80,0x513000001bd0)\nfreed by thread T0 here:\n #0 0x7ffff78fe7e2 in operator delete(void*, unsigned long) /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_new_delete.cpp:164\n #1 0x555556670dca in PerfParser::~PerfParser() /tmp/hotspot/src/parsers/perf/perfparser.cpp:1479\n #2 0x7ffff46d5264 in QObjectPrivate::deleteChildren() (/usr/lib/libQt5Core.so.5+0x2d5264) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #3 0x7ffff5d7abf8 in QWidget::~QWidget() (/usr/lib/libQt5Widgets.so.5+0x17abf8) (BuildId: 254b52226c3f04da1b93d83e86adb3e3cffb6f76)\n #4 0x5555567be0a6 in MainWindow::~MainWindow() /tmp/hotspot/src/mainwindow.cpp:272\n #5 0x5555567be3d7 in MainWindow::~MainWindow() /tmp/hotspot/src/mainwindow.cpp:272\n #6 0x7ffff46d1a7b in QObject::event(QEvent*) (/usr/lib/libQt5Core.so.5+0x2d1a7b) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #7 0x7ffff6a9803d in KXmlGuiWindow::event(QEvent*) (/usr/lib/libKF5XmlGui.so.5+0x8b03d) (BuildId: 47e6c6148b6e322993e79bc55d54257f5f570e1c)\n\npreviously allocated by thread T0 here:\n #0 0x7ffff78fd682 in operator new(unsigned long) /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_new_delete.cpp:95\n #1 0x5555567affca in MainWindow::MainWindow(QWidget*) /tmp/hotspot/src/mainwindow.cpp:93\n #2 0x5555566539da in main /tmp/hotspot/src/main.cpp:220\n #3 0x7ffff3639c87 (/usr/lib/libc.so.6+0x25c87) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)\n #4 0x7ffff3639d4b in __libc_start_main (/usr/lib/libc.so.6+0x25d4b) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)\n #5 0x5555565d5054 in _start (/tmp/hotspot/build-dev-asan/bin/hotspot+0x1081054) (BuildId: a68032c20b67d2759bc6ace66427a8e3b02fa3e6)\n\nThread T25 (GlobalQueue[06]) created by T21 (GlobalQueue[02]) here:\n #0 0x7ffff78f38fb in pthread_create /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_interceptors.cpp:245\n #1 0x7ffff44ee379 in QThread::start(QThread::Priority) (/usr/lib/libQt5Core.so.5+0xee379) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #2 0x7ffff7f6749c in ThreadWeaver::Weaver::adjustInventory(int) (/usr/lib/libKF5ThreadWeaver.so.5+0x1a49c) (BuildId: 200cb669eff8ffb9ace9b7b396df64036685aed2)\n\nThread T21 (GlobalQueue[02]) created by T0 here:\n #0 0x7ffff78f38fb in pthread_create /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_interceptors.cpp:245\n #1 0x7ffff44ee379 in QThread::start(QThread::Priority) (/usr/lib/libQt5Core.so.5+0xee379) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #2 0x7ffff7f6749c in ThreadWeaver::Weaver::adjustInventory(int) (/usr/lib/libKF5ThreadWeaver.so.5+0x1a49c) (BuildId: 200cb669eff8ffb9ace9b7b396df64036685aed2)\n\nfixes: #654","shortMessageHtmlLink":"fix: crash if hotspot is closed while loading a file"}},{"before":"d8427be79b76d9ce0398ccd77714af16d0115677","after":"5edfabc12eb74ecce410df788ec5c0e265759a36","ref":"refs/heads/fix-crash-on-load","pushedAt":"2024-06-07T15:56:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"lievenhey","name":null,"path":"/lievenhey","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/82457690?s=80&v=4"},"commit":{"message":"fix: crash if hotspot is closed while loading a file\n\nThe crash is caused because the destructor is called in one thread while\nother threads still execute. This patch waits in the destructor till all\nthreads terminate.\n\nBacktrace:\n==91946==ERROR: AddressSanitizer: heap-use-after-free on address 0x513000001bb9 at pc 0x5555566c3173 bp 0x7fffca5fe900 sp 0x7fffca5fe8f0\nREAD of size 1 at 0x513000001bb9 thread T25 (GlobalQueue[06])\n #0 0x5555566c3172 in std::__atomic_base::load(std::memory_order) const /usr/include/c++/14.1.1/bits/atomic_base.h:501\n #1 0x5555566c3172 in std::atomic::operator bool() const /usr/include/c++/14.1.1/atomic:92\n #2 0x55555667846a in operator() /tmp/hotspot/src/parsers/perf/perfparser.cpp:1684\n #3 0x5555566c10bc in call /usr/include/qt/QtCore/qobjectdefs_impl.h:146\n #4 0x5555566b9353 in call, void> /usr/include/qt/QtCore/qobjectdefs_impl.h:256\n #5 0x5555566b1239 in impl /usr/include/qt/QtCore/qobjectdefs_impl.h:443\n #6 0x7ffff46df99d (/usr/lib/libQt5Core.so.5+0x2df99d) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #7 0x7ffff4630793 in QProcess::errorOccurred(QProcess::ProcessError) (/usr/lib/libQt5Core.so.5+0x230793) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #8 0x7ffff462c846 (/usr/lib/libQt5Core.so.5+0x22c846) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #9 0x7ffff4630f6c (/usr/lib/libQt5Core.so.5+0x230f6c) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #10 0x7ffff46df961 (/usr/lib/libQt5Core.so.5+0x2df961) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #11 0x7ffff46e096d in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (/usr/lib/libQt5Core.so.5+0x2e096d) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #12 0x7ffff46e0aa4 in QSocketNotifier::event(QEvent*) (/usr/lib/libQt5Core.so.5+0x2e0aa4) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #13 0x7ffff5d56330 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (/usr/lib/libQt5Widgets.so.5+0x156330) (BuildId: 254b52226c3f04da1b93d83e86adb3e3cffb6f76)\n #14 0x7ffff46ab967 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (/usr/lib/libQt5Core.so.5+0x2ab967) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #15 0x7ffff46f8f0d (/usr/lib/libQt5Core.so.5+0x2f8f0d) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #16 0x7ffff2314a88 (/usr/lib/libglib-2.0.so.0+0x5ca88) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)\n #17 0x7ffff23769b6 (/usr/lib/libglib-2.0.so.0+0xbe9b6) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)\n #18 0x7ffff2313f94 in g_main_context_iteration (/usr/lib/libglib-2.0.so.0+0x5bf94) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)\n #19 0x7ffff46fa27e in QEventDispatcherGlib::processEvents(QFlags) (/usr/lib/libQt5Core.so.5+0x2fa27e) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #20 0x7ffff46a372b in QEventLoop::exec(QFlags) (/usr/lib/libQt5Core.so.5+0x2a372b) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #21 0x55555667a9c9 in operator() /tmp/hotspot/src/parsers/perf/perfparser.cpp:1703\n #22 0x5555566c2f6f in run /usr/include/KF5/ThreadWeaver/threadweaver/lambda.h:30\n #23 0x7ffff7f5f5ad in ThreadWeaver::Executor::run(QSharedPointer const&, ThreadWeaver::Thread*) (/usr/lib/libKF5ThreadWeaver.so.5+0x125ad) (BuildId: 200cb669eff8ffb9ace9b7b396df6403668\n5aed2)\n #24 0x7ffff7f604f5 in ThreadWeaver::Job::execute(QSharedPointer const&, ThreadWeaver::Thread*) (/usr/lib/libKF5ThreadWeaver.so.5+0x134f5) (BuildId: 200cb669eff8ffb9ace9b7b396df64036685\naed2)\n #25 0x7ffff7f63f01 in ThreadWeaver::Thread::run() (/usr/lib/libKF5ThreadWeaver.so.5+0x16f01) (BuildId: 200cb669eff8ffb9ace9b7b396df64036685aed2)\n #26 0x7ffff44f258a (/usr/lib/libQt5Core.so.5+0xf258a) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #27 0x7ffff785cc79 in asan_thread_start /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_interceptors.cpp:234\n #28 0x7ffff36a6dec (/usr/lib/libc.so.6+0x92dec) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)\n #29 0x7ffff372a0db (/usr/lib/libc.so.6+0x1160db) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)\n\n0x513000001bb9 is located 313 bytes inside of 336-byte region [0x513000001a80,0x513000001bd0)\nfreed by thread T0 here:\n #0 0x7ffff78fe7e2 in operator delete(void*, unsigned long) /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_new_delete.cpp:164\n #1 0x555556670dca in PerfParser::~PerfParser() /tmp/hotspot/src/parsers/perf/perfparser.cpp:1479\n #2 0x7ffff46d5264 in QObjectPrivate::deleteChildren() (/usr/lib/libQt5Core.so.5+0x2d5264) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #3 0x7ffff5d7abf8 in QWidget::~QWidget() (/usr/lib/libQt5Widgets.so.5+0x17abf8) (BuildId: 254b52226c3f04da1b93d83e86adb3e3cffb6f76)\n #4 0x5555567be0a6 in MainWindow::~MainWindow() /tmp/hotspot/src/mainwindow.cpp:272\n #5 0x5555567be3d7 in MainWindow::~MainWindow() /tmp/hotspot/src/mainwindow.cpp:272\n #6 0x7ffff46d1a7b in QObject::event(QEvent*) (/usr/lib/libQt5Core.so.5+0x2d1a7b) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #7 0x7ffff6a9803d in KXmlGuiWindow::event(QEvent*) (/usr/lib/libKF5XmlGui.so.5+0x8b03d) (BuildId: 47e6c6148b6e322993e79bc55d54257f5f570e1c)\n\npreviously allocated by thread T0 here:\n #0 0x7ffff78fd682 in operator new(unsigned long) /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_new_delete.cpp:95\n #1 0x5555567affca in MainWindow::MainWindow(QWidget*) /tmp/hotspot/src/mainwindow.cpp:93\n #2 0x5555566539da in main /tmp/hotspot/src/main.cpp:220\n #3 0x7ffff3639c87 (/usr/lib/libc.so.6+0x25c87) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)\n #4 0x7ffff3639d4b in __libc_start_main (/usr/lib/libc.so.6+0x25d4b) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)\n #5 0x5555565d5054 in _start (/tmp/hotspot/build-dev-asan/bin/hotspot+0x1081054) (BuildId: a68032c20b67d2759bc6ace66427a8e3b02fa3e6)\n\nThread T25 (GlobalQueue[06]) created by T21 (GlobalQueue[02]) here:\n #0 0x7ffff78f38fb in pthread_create /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_interceptors.cpp:245\n #1 0x7ffff44ee379 in QThread::start(QThread::Priority) (/usr/lib/libQt5Core.so.5+0xee379) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #2 0x7ffff7f6749c in ThreadWeaver::Weaver::adjustInventory(int) (/usr/lib/libKF5ThreadWeaver.so.5+0x1a49c) (BuildId: 200cb669eff8ffb9ace9b7b396df64036685aed2)\n\nThread T21 (GlobalQueue[02]) created by T0 here:\n #0 0x7ffff78f38fb in pthread_create /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_interceptors.cpp:245\n #1 0x7ffff44ee379 in QThread::start(QThread::Priority) (/usr/lib/libQt5Core.so.5+0xee379) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #2 0x7ffff7f6749c in ThreadWeaver::Weaver::adjustInventory(int) (/usr/lib/libKF5ThreadWeaver.so.5+0x1a49c) (BuildId: 200cb669eff8ffb9ace9b7b396df64036685aed2)\n\nfixes: #654","shortMessageHtmlLink":"fix: crash if hotspot is closed while loading a file"}},{"before":"b88810d38692c270c6a8c1d552f936a3361a7a93","after":"d8427be79b76d9ce0398ccd77714af16d0115677","ref":"refs/heads/fix-crash-on-load","pushedAt":"2024-06-07T15:54:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"lievenhey","name":null,"path":"/lievenhey","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/82457690?s=80&v=4"},"commit":{"message":"fix: crash if hotspot is closed while loading a file\n\nThe crash is caused because the destructor is called in one thread while\nother threads still execute. This patch waits in the destructor till all\nthreads terminate.\n\nBacktrace:\n==91946==ERROR: AddressSanitizer: heap-use-after-free on address 0x513000001bb9 at pc 0x5555566c3173 bp 0x7fffca5fe900 sp 0x7fffca5fe8f0\nREAD of size 1 at 0x513000001bb9 thread T25 (GlobalQueue[06])\n #0 0x5555566c3172 in std::__atomic_base::load(std::memory_order) const /usr/include/c++/14.1.1/bits/atomic_base.h:501\n #1 0x5555566c3172 in std::atomic::operator bool() const /usr/include/c++/14.1.1/atomic:92\n #2 0x55555667846a in operator() /home/lieven/KDAB/hotspot/src/parsers/perf/perfparser.cpp:1684\n #3 0x5555566c10bc in call /usr/include/qt/QtCore/qobjectdefs_impl.h:146\n #4 0x5555566b9353 in call, void> /usr/include/qt/QtCore/qobjectdefs_impl.h:256\n #5 0x5555566b1239 in impl /usr/include/qt/QtCore/qobjectdefs_impl.h:443\n #6 0x7ffff46df99d (/usr/lib/libQt5Core.so.5+0x2df99d) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #7 0x7ffff4630793 in QProcess::errorOccurred(QProcess::ProcessError) (/usr/lib/libQt5Core.so.5+0x230793) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #8 0x7ffff462c846 (/usr/lib/libQt5Core.so.5+0x22c846) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #9 0x7ffff4630f6c (/usr/lib/libQt5Core.so.5+0x230f6c) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #10 0x7ffff46df961 (/usr/lib/libQt5Core.so.5+0x2df961) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #11 0x7ffff46e096d in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (/usr/lib/libQt5Core.so.5+0x2e096d) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #12 0x7ffff46e0aa4 in QSocketNotifier::event(QEvent*) (/usr/lib/libQt5Core.so.5+0x2e0aa4) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #13 0x7ffff5d56330 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (/usr/lib/libQt5Widgets.so.5+0x156330) (BuildId: 254b52226c3f04da1b93d83e86adb3e3cffb6f76)\n #14 0x7ffff46ab967 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (/usr/lib/libQt5Core.so.5+0x2ab967) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #15 0x7ffff46f8f0d (/usr/lib/libQt5Core.so.5+0x2f8f0d) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #16 0x7ffff2314a88 (/usr/lib/libglib-2.0.so.0+0x5ca88) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)\n #17 0x7ffff23769b6 (/usr/lib/libglib-2.0.so.0+0xbe9b6) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)\n #18 0x7ffff2313f94 in g_main_context_iteration (/usr/lib/libglib-2.0.so.0+0x5bf94) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)\n #19 0x7ffff46fa27e in QEventDispatcherGlib::processEvents(QFlags) (/usr/lib/libQt5Core.so.5+0x2fa27e) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #20 0x7ffff46a372b in QEventLoop::exec(QFlags) (/usr/lib/libQt5Core.so.5+0x2a372b) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #21 0x55555667a9c9 in operator() /home/lieven/KDAB/hotspot/src/parsers/perf/perfparser.cpp:1703\n #22 0x5555566c2f6f in run /usr/include/KF5/ThreadWeaver/threadweaver/lambda.h:30\n #23 0x7ffff7f5f5ad in ThreadWeaver::Executor::run(QSharedPointer const&, ThreadWeaver::Thread*) (/usr/lib/libKF5ThreadWeaver.so.5+0x125ad) (BuildId: 200cb669eff8ffb9ace9b7b396df6403668\n5aed2)\n #24 0x7ffff7f604f5 in ThreadWeaver::Job::execute(QSharedPointer const&, ThreadWeaver::Thread*) (/usr/lib/libKF5ThreadWeaver.so.5+0x134f5) (BuildId: 200cb669eff8ffb9ace9b7b396df64036685\naed2)\n #25 0x7ffff7f63f01 in ThreadWeaver::Thread::run() (/usr/lib/libKF5ThreadWeaver.so.5+0x16f01) (BuildId: 200cb669eff8ffb9ace9b7b396df64036685aed2)\n #26 0x7ffff44f258a (/usr/lib/libQt5Core.so.5+0xf258a) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #27 0x7ffff785cc79 in asan_thread_start /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_interceptors.cpp:234\n #28 0x7ffff36a6dec (/usr/lib/libc.so.6+0x92dec) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)\n #29 0x7ffff372a0db (/usr/lib/libc.so.6+0x1160db) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)\n\n0x513000001bb9 is located 313 bytes inside of 336-byte region [0x513000001a80,0x513000001bd0)\nfreed by thread T0 here:\n #0 0x7ffff78fe7e2 in operator delete(void*, unsigned long) /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_new_delete.cpp:164\n #1 0x555556670dca in PerfParser::~PerfParser() /home/lieven/KDAB/hotspot/src/parsers/perf/perfparser.cpp:1479\n #2 0x7ffff46d5264 in QObjectPrivate::deleteChildren() (/usr/lib/libQt5Core.so.5+0x2d5264) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #3 0x7ffff5d7abf8 in QWidget::~QWidget() (/usr/lib/libQt5Widgets.so.5+0x17abf8) (BuildId: 254b52226c3f04da1b93d83e86adb3e3cffb6f76)\n #4 0x5555567be0a6 in MainWindow::~MainWindow() /home/lieven/KDAB/hotspot/src/mainwindow.cpp:272\n #5 0x5555567be3d7 in MainWindow::~MainWindow() /home/lieven/KDAB/hotspot/src/mainwindow.cpp:272\n #6 0x7ffff46d1a7b in QObject::event(QEvent*) (/usr/lib/libQt5Core.so.5+0x2d1a7b) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #7 0x7ffff6a9803d in KXmlGuiWindow::event(QEvent*) (/usr/lib/libKF5XmlGui.so.5+0x8b03d) (BuildId: 47e6c6148b6e322993e79bc55d54257f5f570e1c)\n\npreviously allocated by thread T0 here:\n #0 0x7ffff78fd682 in operator new(unsigned long) /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_new_delete.cpp:95\n #1 0x5555567affca in MainWindow::MainWindow(QWidget*) /home/lieven/KDAB/hotspot/src/mainwindow.cpp:93\n #2 0x5555566539da in main /home/lieven/KDAB/hotspot/src/main.cpp:220\n #3 0x7ffff3639c87 (/usr/lib/libc.so.6+0x25c87) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)\n #4 0x7ffff3639d4b in __libc_start_main (/usr/lib/libc.so.6+0x25d4b) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)\n #5 0x5555565d5054 in _start (/home/lieven/KDAB/hotspot/build-dev-asan/bin/hotspot+0x1081054) (BuildId: a68032c20b67d2759bc6ace66427a8e3b02fa3e6)\n\nThread T25 (GlobalQueue[06]) created by T21 (GlobalQueue[02]) here:\n #0 0x7ffff78f38fb in pthread_create /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_interceptors.cpp:245\n #1 0x7ffff44ee379 in QThread::start(QThread::Priority) (/usr/lib/libQt5Core.so.5+0xee379) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #2 0x7ffff7f6749c in ThreadWeaver::Weaver::adjustInventory(int) (/usr/lib/libKF5ThreadWeaver.so.5+0x1a49c) (BuildId: 200cb669eff8ffb9ace9b7b396df64036685aed2)\n\nThread T21 (GlobalQueue[02]) created by T0 here:\n #0 0x7ffff78f38fb in pthread_create /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_interceptors.cpp:245\n #1 0x7ffff44ee379 in QThread::start(QThread::Priority) (/usr/lib/libQt5Core.so.5+0xee379) (BuildId: 5ae775b980e5842fcce9c0a035de95718227fa6e)\n #2 0x7ffff7f6749c in ThreadWeaver::Weaver::adjustInventory(int) (/usr/lib/libKF5ThreadWeaver.so.5+0x1a49c) (BuildId: 200cb669eff8ffb9ace9b7b396df64036685aed2)\n\nfixes: #654","shortMessageHtmlLink":"fix: crash if hotspot is closed while loading a file"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0yNlQxMzozMTo1MC4wMDAwMDBazwAAAATBiO24","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNi0wN1QxNTo1NDoyMS4wMDAwMDBazwAAAARfY2hu"}},"title":"Activity ยท KDAB/hotspot"}