KDevelop can't load project: "too large document"?

Matthew Woehlke mwoehlke.floss at gmail.com
Tue Dec 5 21:48:24 GMT 2017


On 2017-12-05 16:31, René J.V. Bertin wrote:
> On Tuesday December 05 2017 15:33:42 Matthew Woehlke wrote:
>> I did notice that the backtraces are a significant part of the JSON...
>> does KDevelop need those, and if not, is there a way to omit or strip them?
> 
> No idea.

After looking at the CMake source code: not AFAICT :'(.

I don't know (didn't look) if KDevelop is interested in them; I believe
they are new in 3.10...

> I'd suggest to take a good look where that too-large error message
> really came from.

It comes from cmakeserver.cpp:150:

    auto doc = QJsonDocument::fromJson(data, &error);
    if (error.error) {
        qCWarning(CMAKE) << "error processing" << error.errorString()
                         << data;
    }

Basically, QJson took one look at the size of the data and punted. In
particular, see also https://bugreports.qt.io/browse/QTBUG-58652.

> it seems reasonable that there's an upper limit, and that KDevelop
> would need to detect when this limit is reached and handle that
> situation gracefully

Indeed. At the very least, it shouldn't just quit trying to import the
project, leaving KDevelop in a weird state :-).

>>   $ ll -h compile_commands.json
>>   -rw-rw-r--. 1 matthew matthew 817K Dec  5 15:00 compile_commands.json
> 
> Compared to 100Mb ... that's a sizeable difference!

Yup.

The culprit is
https://gitlab.kitware.com/cmake/cmake/merge_requests/992. That
increased the size of the JSON by about 20x. The *pretty*-printed JSON,
if I strip out the stuff that cmake!992 added, is only about 5 MiB.
(Which is still lots more than the compile commands, but I suspect the
code model dump, even without the traces, has more and better structured
information.)

-- 
Matthew



More information about the KDevelop mailing list