Make parsing phpfunctions.php a proper parse job
Needs RevisionPublic

Authored by kfunk on Aug 4 2017, 12:19 PM.

Details

Reviewers
mwolff
Summary

So it can also be tracked & aborted properly by the background parser.

Diff Detail

Repository
R52 KDevelop: PHP Support
Branch
5.1
Lint
No Linters Available
Unit
No Unit Test Coverage
kfunk created this revision.Aug 4 2017, 12:19 PM
Restricted Application added a subscriber: kdevelop-devel. · View Herald TranscriptAug 4 2017, 12:19 PM

Crashes for me if I open KDevelop with a cleared cache and the following file open:

<?php

$c = strpos("abcd", "cd");

Backtrace:

#0  0x00007f40de3d28c0 in raise () at /usr/lib/libc.so.6
#1  0x00007f40de3d3f72 in abort () at /usr/lib/libc.so.6
#2  0x00007f40df08c9a8 in  () at /usr/lib/libQt5Core.so.5
#3  0x00007f40df087a68 in  () at /usr/lib/libQt5Core.so.5
#4  0x00007f4093ef6cd7 in Php::ContextBuilder::startVisiting(Php::AstNode*) (this=0x7f407956ee70, node=0x7f40680037b0)
    at /home/matthijs/kde/kdesrc/extragear/kdevelop/plugins/kdev-php/parser/php.g:275
#5  0x00007f4093ee1b61 in KDevelop::AbstractContextBuilder<Php::AstNode, Php::IdentifierAst>::supportBuild(Php::AstNode*, KDevelop::DUContext*) (this=0x7f407956ee70, node=0x7f40680037b0, context=0x7f406800bb80)
    at /home/matthijs/kde/include/kdevplatform/language/duchain/builders/abstractcontextbuilder.h:131
#6  0x00007f4093eed556 in KDevelop::AbstractContextBuilder<Php::AstNode, Php::IdentifierAst>::build(KDevelop::IndexedString const&, Php::AstNode*, KDevelop::ReferencedTopDUContext) (this=0x7f407956ee70, url=..., node=0x7f40680037b0, updateContext=...)
    at /home/matthijs/kde/include/kdevplatform/language/duchain/builders/abstractcontextbuilder.h:111
#7  0x00007f4093ef6998 in Php::ContextBuilder::build(KDevelop::IndexedString const&, Php::AstNode*, KDevelop::ReferencedTopDUContext) (this=0x7f407956ee70, url=..., node=0x7f40680037b0, updateContext=...)
    at /home/matthijs/kde/kdesrc/extragear/kdevelop/plugins/kdev-php/parser/php.g:239
#8  0x00007f4093ee2a7b in Php::DeclarationBuilder::build(KDevelop::IndexedString const&, Php::AstNode*, KDevelop::ReferencedTopDUContext) (this=
    0x7f407956f710, url=..., node=0x7f40680037b0, updateContext=...)
    at /home/matthijs/kde/kdesrc/extragear/kdevelop/plugins/kdev-php/parser/php.g:285
#9  0x00007f40941d0af2 in Php::ParseJob::run(QSharedPointer<ThreadWeaver::JobInterface>, ThreadWeaver::Thread*) (this=0x100b68480)
    at /home/matthijs/kde/kdesrc/build/extragear/kdevelop/plugins/kdev-php/parser/phpvisitor.h:103
#10 0x00007f40db50fed6 in ThreadWeaver::IdDecorator::run(QSharedPointer<ThreadWeaver::JobInterface>, ThreadWeaver::Thread*) ()
    at /usr/lib/libKF5ThreadWeaver.so.5
#11 0x00007f40db5104a8 in ThreadWeaver::Executor::run(QSharedPointer<ThreadWeaver::JobInterface> const&, ThreadWeaver::Thread*) ()
    at /usr/lib/libKF5ThreadWeaver.so.5
#12 0x00007f40db50f4fe in ThreadWeaver::Job::execute(QSharedPointer<ThreadWeaver::JobInterface> const&, ThreadWeaver::Thread*) ()
    at /usr/lib/libKF5ThreadWeaver.so.5
#13 0x00007f40db50ec2d in ThreadWeaver::Thread::run() ()
    at /usr/lib/libKF5ThreadWeaver.so.5
#14 0x00007f40df0a215b in  () at /usr/lib/libQt5Core.so.5
#15 0x00007f40d9487049 in start_thread () at /usr/lib/libpthread.so.0
#16 0x00007f40de48cf0f in clone () at /usr/lib/libc.so.6
kfunk added a comment.Aug 8 2017, 9:28 PM

Crashes for me if I open KDevelop with a cleared cache and the following file open:

<?php

$c = strpos("abcd", "cd");

I can't reproduce this. I'm echo'ing your code to test.php and then run:
CLEAR_DUCHAIN_DIR=1 kdevelop test.php

No crash here.

Can someone else reproduce this crash?

(snip)

mwolff requested changes to this revision.Aug 8 2017, 10:51 PM
mwolff added a subscriber: mwolff.

you need to wait for the job to finish, before running the other job. so just adding the document is not enough. I also don't understand why this is directly related to D7128? The change you are doing here is within a running parse job already, so D7128 on its own should be fine?

This revision now requires changes to proceed.Aug 8 2017, 10:51 PM