KDevelop cpp file causes DoS on CI nodes

Igor Kushnir igorkuo at gmail.com
Sun Jan 22 10:30:04 GMT 2023


On 2023-01-22 00:17, Ben Cooksley wrote:
> Hi Milian,
> 
> This morning I noticed that 2/3 of our Windows CI nodes were offline, due to 
> them being killed by the OOM killer.
> 
> Investigation has traced it back to cppcheck, which appears to have serious 
> problems with the following file currently on a work branch you're working on, 
> with cppcheck using far in excess of 8GB of RAM when trying to process that file 
> (see https://invent.kde.org/kdevelop/kdevelop/-/jobs/722348 
> <https://invent.kde.org/kdevelop/kdevelop/-/jobs/722348>)
> 
> The file in question is 
> https://invent.kde.org/kdevelop/kdevelop/-/blob/work/kdev-clang-cache-types/plugins/clang/tests/files/kdev_ignored/mangle-ms-back-references-pr13207.cpp <https://invent.kde.org/kdevelop/kdevelop/-/blob/work/kdev-clang-cache-types/plugins/clang/tests/files/kdev_ignored/mangle-ms-back-references-pr13207.cpp>
> 
> Can we please get it removed from the repository or otherwise fixed to not 
> trigger this cppcheck bug?
> Please do not test any fixes for this issue on the CI system - as it will cause 
> the Windows (and even potentially FreeBSD) CI worker nodes to be killed.
> 
> Thanks,
> Ben

Hi!

I think we should disable running cppcheck on this test file. Unfortunately I 
couldn't find a way to suppress cppcheck-ing a file without modifying the 
cppcheck command line arguments. A quick and simple workaround that should work 
(haven't tested it yet) is this patch:

diff --git a/.kde-ci.yml b/.kde-ci.yml
index 4921b8c20d..ed61134ad3 100644
--- a/.kde-ci.yml
+++ b/.kde-ci.yml
@@ -15,3 +15,7 @@ Dependencies:
  - 'on': ['Linux', 'FreeBSD']
    'require':
      'plasma/libksysguard': '@stable'
+
+Options:
+  cppcheck-ignore-files:
+    - plugins/clang/tests/files/kdev_ignored/

But cppcheck run in the KDevelop project directory locally would still hang, 
because .kde-ci.yml would be ignored then.

Milian, is this local cppcheck issue a problem? Should we remove the test file 
because of it? Or should we just report the bug to cppcheck upstream and keep 
the test file?

Cheers,
Igor


More information about the KDevelop-devel mailing list