- 07 Aug, 2022 1 commit
-
-
Script Kiddy authored
In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
-
- 29 Jul, 2022 1 commit
-
-
ivan tkachenko authored
With kio patch merged in, systemctl --user status should look like this: ├─app-org.kde.kdevelop-4464f41eb0ca429aa1aef231ba38e868.scope │ └─9634 /usr/bin/kdevelop --ps See also frameworks/kio!920
-
- 27 Jul, 2022 2 commits
-
-
Igor Kushnir authored
DUChainPrivate::doMoreCleanup() clears the cache before the destruction of objects with static object duration. The crash described in a8ffba2c indicates that the cache is filled again afterwards. So the only effect of clearing the cache seems to be slower exit because of more cache misses.
-
Igor Kushnir authored
a8ffba2c cleared the persistent symbol table caches in ~PersistentSymbolTable() to work around an AddressSanitizer crash when a non-empty imports cache is destroyed after the cache repository it references. The constructor of the PersistentSymbolTable singleton creates a PersistentSymbolTableRepo function-local static, then a RecursiveImportCacheRepository function-local static. The order of destruction of these 3 static objects is the reverse of the order of their construction completion: ~PersistentSymbolTable() recursiveImportCacheRepositoryObject's destruction ~PersistentSymbolTableRepo() Since PersistentSymbolTableRepo::importsCache depends on recursiveImportCacheRepositoryObject and not vice versa, a proper fix is to create the cache repository before and thus destroy after the persistent symbol table repository.
-
- 25 Jul, 2022 4 commits
-
-
Friedrich W. H. Kossebau authored
GIT_SILENT
-
Friedrich W. H. Kossebau authored
GIT_SILENT
-
Friedrich W. H. Kossebau authored
-
Friedrich W. H. Kossebau authored
-
- 23 Jul, 2022 1 commit
-
-
Friedrich W. H. Kossebau authored
GIT_SILENT
-
- 15 Jul, 2022 11 commits
-
-
Milian Wolff authored
Instead clear the cache early when the PersistentSymbolTable is destroyed, not only once we destroy the repository. At the latter stage, the items referenced by the cache might be gone already, leading to crashes such as: ``` ================================================================= ==25768==ERROR: AddressSanitizer: heap-use-after-free on address 0x60b000089bb4 at pc 0x7effefaf1018 bp 0x7ffea79d94c0 sp 0x7ffea79d94b8 READ of size 4 at 0x60b000089bb4 thread T0 #0 0x7effefaf1017 in QVector<KDevelop::Bucket<Utils::SetNodeData, Utils::SetNodeDataRequest, false, 24u>*>::size() const /usr/include/qt5/QtCore/qvector.h:88 #1 0x7effefaf1d45 in KDevelop::ItemRepository<Utils::SetNodeData, Utils::SetNodeDataRequest, false, QRecursiveMutex, 24u, 1048576u>::verifyIndex(unsigned int) const /builds/kdevelop/kdevelop/kdevplatform/serialization/itemrepository.h:2252 #2 0x7efff0157ad7 in KDevelop::ItemRepository<Utils::SetNodeData, Utils::SetNodeDataRequest, false, QRecursiveMutex, 24u, 1048576u>::dynamicItemFromIndexSimple(unsigned int) /builds/kdevelop/kdevelop/kdevplatform/serialization/itemrepository.h:1533 #3 0x7efff014e331 in Utils::Set::unrefNode(unsigned int) /builds/kdevelop/kdevelop/kdevplatform/language/util/setrepository.cpp:1143 #4 0x7efff014e7d2 in Utils::Set::staticUnref() /builds/kdevelop/kdevelop/kdevplatform/language/util/setrepository.cpp:1173 #5 0x7effeff064c7 in ~StorableSet /builds/kdevelop/kdevelop/kdevplatform/language/util/setrepository.h:187 #6 0x7effeff1e8d5 in ~QHashNode /usr/include/qt5/QtCore/qhash.h:147 #7 0x7effeff1e951 in deleteNode2 /usr/include/qt5/QtCore/qhash.h:595 #8 0x7effde12975b in QHashData::free_helper(void (*)(QHashData::Node*)) (/lib64/libQt5Core.so.5+0x13175b) #9 0x7effeff0b679 in freeData /usr/include/qt5/QtCore/qhash.h:619 #10 0x7effeff014e7 in ~QHash /usr/include/qt5/QtCore/qhash.h:250 #11 0x7effeff28264 in ~PersistentSymbolTableRepo /builds/kdevelop/kdevelop/kdevplatform/language/duchain/persistentsymboltable.cpp:192 #12 0x7effddaef104 in __run_exit_handlers (/lib64/libc.so.6+0x59104) #13 0x7effddaef28f in exit (/lib64/libc.so.6+0x5928f) #14 0x7effddad65b6 in __libc_start_call_main (/lib64/libc.so.6+0x405b6) #15 0x7effddad6678 in __libc_start_main_alias_1 (/lib64/libc.so.6+0x40678) #16 0x407ed4 in _start (/builds/kdevelop/kdevelop/_build/bin/test_files+0x407ed4) 0x60b000089bb4 is located 4 bytes inside of 104-byte region [0x60b000089bb0,0x60b000089c18) freed by thread T0 here: #0 0x7efff53080c8 (/lib64/libasan.so.8+0xbb0c8) #1 0x7effefb07210 in QTypedArrayData<KDevelop::Bucket<Utils::SetNodeData, Utils::SetNodeDataRequest, false, 24u>*>::deallocate(QArrayData*) /usr/include/qt5/QtCore/qarraydata.h:240 #2 0x7effefafe448 in QVector<KDevelop::Bucket<Utils::SetNodeData, Utils::SetNodeDataRequest, false, 24u>*>::freeData(QTypedArrayData<KDevelop::Bucket<Utils::SetNodeData, Utils::SetNodeDataRequest, false, 24u>*>*) /usr/include/qt5/QtCore/qvector.h:579 #3 0x7efff0158e5f in QVector<KDevelop::Bucket<Utils::SetNodeData, Utils::SetNodeDataRequest, false, 24u>*>::~QVector() /usr/include/qt5/QtCore/qvector.h:73 #4 0x7efff0151888 in KDevelop::ItemRepository<Utils::SetNodeData, Utils::SetNodeDataRequest, false, QRecursiveMutex, 24u, 1048576u>::~ItemRepository() /builds/kdevelop/kdevelop/kdevplatform/serialization/itemrepository.h:1128 #5 0x7efff01673f6 in Utils::SetDataRepository::~SetDataRepository() /builds/kdevelop/kdevelop/kdevplatform/language/util/basicsetrepository.h:178 #6 0x7efff014b9f4 in Utils::BasicSetRepository::~BasicSetRepository() /builds/kdevelop/kdevelop/kdevplatform/language/util/setrepository.cpp:987 #7 0x7effddaef104 in __run_exit_handlers (/lib64/libc.so.6+0x59104) ```
-
-
Large parts of KDevelop's code were reformatted in 2018 using uncrustify (search for commit messages containing "uncrustify"). Bringing .clang-format as close as possible to format.config.uncrustify is going to minimize diff during a future reformatting.
-
See e8987f58 for the explanation.
-
-
No non-Custom BreakBeforeBraces value fits the KDevelop code style: * "Linux" breaks before brace on namespace definition; * "Mozilla" breaks before brace on enum definition; * "WebKit" doesn't break before brace on class definition.
-
-
Copy the following file verbatim into .clang-format: https://commits.kde.org/extra-cmake-modules?path=kde-modules/clang-format.cmake
-
Milian Wolff authored
Instead give better names to the typedefs and use them directly.
-
Milian Wolff authored
The type we was is just a context, it doesn't have to be the item. Unify on the non-item class for which the repository is used, or introduce a separate context type tag where none exists. This allows for shorter callee code. Note that the separate type tag is already an established paradigm which was used previously for the DeclarationComment e.g. Fixes: kdevelop/kdevelop#9
-
Milian Wolff authored
Instead of handing out raw iterators to data that is stored within the symbol table, force users to pass a visitor instead. This has the nice side effect that we can hide way more of the persistent symbol table internals. We can now also get rid of the extra mutex for the caches, as we only touch them while we have the repository mutex locked. The downside is that the callee loops are all a bit more tedious to write, as we can't just `break` or `continue` directly anymore and instead have to return a special `Break` or `Continue` value from the visitor instead. Fixes: kdevelop/kdevelop#10
-
- 14 Jul, 2022 5 commits
-
-
Milian Wolff authored
The PersistentSymbolTable stores IndexedDeclarations, we should validate the validity of the Declaration before use - potentially the declaration isn't valid anymore.
-
Milian Wolff authored
We do not unlock the mutex thus the declaration pointer will remain valid and we don't need to go through the DeclarationPointer here at all.
-
Milian Wolff authored
The code in DocumentClassesFolder::updateDocument accidentally (?) only ever checked the very first declaration returned by the symbol table. This has to be wrong, fix the code to actually iterate over all returned declarations.
-
Milian Wolff authored
-
Igor Kushnir authored
When QWebEnginePage::setHtml() is called, the URL's string representation becomes "data:text/html;charset=UTF-8,PAGE", where PAGE stands for the entire HTML contents. If kdevplatform.documentation.debug is true, KDevelop prints a very long line each time a CMake or Man documentation page is loaded. Such long lines are not particularly useful but can slow the application down. Print a general message in place of a URL with the "data" scheme.
-
- 13 Jul, 2022 1 commit
-
-
Nicolas Fella authored
-
- 12 Jul, 2022 2 commits
-
-
Albert Astals Cid authored
-
Albert Astals Cid authored
-
- 11 Jul, 2022 3 commits
-
-
Milian Wolff authored
Use an IILE with Q_UNREACHABLE instead to cleanup this code.
-
Milian Wolff authored
This was a setup issue on my side, I had QT_PLUGIN_PATH set which made the tests load the non-sanitized plugins, which then triggered these warnings. Loading the sanitized plugins instead, these false- positive warnings are gone again.
-
Script Kiddy authored
In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
-
- 10 Jul, 2022 9 commits
-
-
Milian Wolff authored
Process delayed deletion events in cleanup.
-
Milian Wolff authored
-
Milian Wolff authored
-
Milian Wolff authored
The test_midbus and test_gdb reported lots of memory leaks for these commands because we passed around raw pointers and only sometimes deleted them correctly. Now we use std::unique_ptr and pass those along, which guarantees we don't leak them ever.
-
Milian Wolff authored
Fixes various memory leaks reported in the test_midbus test. The m_shuttingDown member is required as IDebugSession::raiseEvent would otherwise call pure-virtuals when the class is already partially destroyed.
-
Milian Wolff authored
Fixes UBSAN warning when qApp turned into QGuiApplication which we don't have in this test.
-
Milian Wolff authored
Use a std::vector-of-values instead of a QList-of-pointers.
-
Milian Wolff authored
-
Milian Wolff authored
Apparently LLVM's internal sigaltstack usage does not play well together with the sanitizers, see [1]. This leads to failed tests on our CI. Setting use_sigaltstack=0 as an ASAN_OPTION fixes this issue, which this patch here does. Sadly, we have to jump through some hoops to achieve this though. On one hand, we want to extend the ASAN_OPTIONS, not overwrite it. As such, we can't just set the ctest ENVIRONMENT property, as the CI sets a bunch of custom flags in the ASAN_OPTIONS env var. Users might have their own set of values there too. Once we can rely on CMake 3.22 or newer, we might use ENVIRONMENT_MODIFICATION. Furthermore, I could not get __asan_default_options() to work with GCC. So, instead for now we use some dirty hackery: We check whether the use_sigaltstack option is set in ASAN_OPTIONS. If not, we set it explicitly to 0 and then execve the test anew. This way we can be sure that the environment gets picked up properly. [1]: https://github.com/google/sanitizers/issues/849
-