Skip to content
Snippets Groups Projects
  1. Apr 14, 2014
    • Nikolai Kosjar's avatar
      CppTools: Fix data race when accessing the editor revision · 9b2672cb
      Nikolai Kosjar authored
      
      Addresses the following findings of QTCREATORBUG-12030:
       * qtc.helgrind.plugintests.txt#2
       * qtc.helgrind.usingEditors1.txt#1
      
      Helgrind report (truncated):
      
      Possible data race during write of size 4 at 0x23679618 by thread #1
      Locks held: none
         at 0x6819003: ???
         by 0x681D713: ???
         by 0x68200DE: ???
         by 0x684B8F8: QTextCursor::insertText(QString const&, QTextCharFormat const&)
         by 0x684BCB9: QTextCursor::insertText(QString const&)
         by 0x139DA06C: TextEditor::BaseTextEditorWidget::keyPressEvent(QKeyEvent*) (basetexteditor.cpp:1866)
         by 0x184C999F: CppEditor::Internal::CPPEditorWidget::keyPressEvent(QKeyEvent*) (cppeditor.cpp:1416)
      
      This conflicts with a previous read of size 4 by thread #18
      Locks held: none
         at 0x680BC54: QTextDocument::revision() const
         by 0x159047F3: CppTools::CppEditorSupport::editorRevision() const (cpptoolseditorsupport.cpp:198)
         by 0x158E39BF: CppTools::Internal::CppModelManager::buildWorkingCopyList() (cppmodelmanager.cpp:525)
         by 0x158E3D5B: CppTools::Internal::CppModelManager::workingCopy() const (cppmodelmanager.cpp:544)
         by 0x1589FF6F: CppTools::Internal::CppCompletionAssistInterface::getCppSpecifics() const (cppcompletionassist.cpp:1957)
         by 0x158A1158: CppTools::Internal::CppCompletionAssistInterface::snapshot() const (cppcompletionassist.h:200)
         by 0x1589707C: CppTools::Internal::CppCompletionAssistProcessor::startCompletionInternal(QString, unsigned int, unsigned int, QString const&, int) (cppcompletionassist.cpp:1212)
         by 0x15893CC7: CppTools::Internal::CppCompletionAssistProcessor::startCompletionHelper() (cppcompletionassist.cpp:970)
      
      ---
      
      Possible data race during write of size 4 at 0x24C8AD18 by thread #1
      Locks held: none
         at 0x684AF23: QTextCursor::beginEditBlock()
         by 0x139D7D05: TextEditor::BaseTextEditorWidget::keyPressEvent(QKeyEvent*) (basetexteditor.cpp:1578)
         by 0x184C999F: CppEditor::Internal::CPPEditorWidget::keyPressEvent(QKeyEvent*) (cppeditor.cpp:1416)
         ...
         by 0x40F15A: main (main.cpp:533)
      
      This conflicts with a previous read of size 4 by thread #11
      Locks held: none
         at 0x680BC54: QTextDocument::revision() const
         by 0x159048D3: CppTools::CppEditorSupport::editorRevision() const (cpptoolseditorsupport.cpp:198)
         by 0x158E3A9F: CppTools::Internal::CppModelManager::buildWorkingCopyList() (cppmodelmanager.cpp:525)
         by 0x158E3E3B: CppTools::Internal::CppModelManager::workingCopy() const (cppmodelmanager.cpp:544)
         by 0x1590741E: parse(QFutureInterface<void>&, QSharedPointer<CppTools::SnapshotUpdater>) (cpptoolseditorsupport.cpp:299)
      
      Task-number: QTCREATORBUG-12030
      Change-Id: Idf0aa47f1f6bfd6814a961fe39d3b19b98f934f5
      Reviewed-by: default avatarOrgad Shaneh <orgads@gmail.com>
      Reviewed-by: default avatarErik Verbruggen <erik.verbruggen@digia.com>
      9b2672cb
    • Nikolai Kosjar's avatar
      CppTools: Remove invalid optimization for highlighting · 291b80cb
      Nikolai Kosjar authored
      
      The optimization in question could lead to an empty source and thus to
      no highlighting. Checking for 'force' and the revisions is at this point
      not enough since later the semantic info calculcation can be aborted, so
      that a subsequent recalculation would get an empty document.
      
      contents() itself is already optimized (uses caching).
      
      Task-number: QTCREATORBUG-11367
      Change-Id: If31a8ab0c848e4babd38104961fb9812f077a2be
      Reviewed-by: default avatarOrgad Shaneh <orgads@gmail.com>
      Reviewed-by: default avatarErik Verbruggen <erik.verbruggen@digia.com>
      291b80cb
    • Nikolai Kosjar's avatar
      CppTools: Do not wait in GUI thread for the parsed document · e7904caf
      Nikolai Kosjar authored
      
      ...when collecting data for the semantic highlighting recalculation.
      
      Task-number: QTCREATORBUG-11037
      
      Change-Id: Ibed73a2916df0a91aedef166de2c8c6bb5df309c
      Reviewed-by: default avatarOrgad Shaneh <orgads@gmail.com>
      Reviewed-by: default avatarErik Verbruggen <erik.verbruggen@digia.com>
      e7904caf
  2. Apr 11, 2014
  3. Apr 09, 2014
  4. Apr 04, 2014
  5. Apr 03, 2014
  6. Mar 31, 2014
  7. Mar 27, 2014
  8. Mar 26, 2014
  9. Mar 25, 2014
  10. Mar 17, 2014
    • Nikolai Kosjar's avatar
      CppEditor: Allow force highlighting if using clang · cbf98ba8
      Nikolai Kosjar authored
      
      ...so we can rehighlight if it's requested by the editor. This is e.g.
      necessary if the font size changes.
      
      Task-number: QTCREATORBUG-11502
      Change-Id: I608921899fc37fcf1394db9ff041e6b378196bdd
      Reviewed-by: default avatarErik Verbruggen <erik.verbruggen@digia.com>
      cbf98ba8
    • Nikolai Kosjar's avatar
      CppTools: Tag incomplete semantic info · 18e6be55
      Nikolai Kosjar authored
      
      ...in order to be able to full-rehighlight on the next turn.
      
      The following sequence was problematic:
      
      1. recalculateSemanticInfoDetached(true)
         * e.g. triggered by opening the document
      2. recalculateSemanticInfoDetached(false)
         * e.g. triggered by moving the cursor
         * cancels 1. and leads to incompletely parsed/checked document - OK
      3. startHighlighting()
         * triggered by 1.; starts highlighting on incomplete document - OK
      4. startHighlighting()
         * gets a completely parsed/checked document - OK
         * not forced, so just compare revisions; they are the same, so
           skip/return - a partly highlighted document is left behind.
      
      Task-number: QTCREATORBUG-11367
      Change-Id: Ic56e00e862ec4a1ffa197b2fc8b48be56a3562de
      Reviewed-by: default avatarErik Verbruggen <erik.verbruggen@digia.com>
      18e6be55
    • Nikolai Kosjar's avatar
      CppEditor: Do not cancel highlighter on user interaction · 1f0fd959
      Nikolai Kosjar authored
      
      e.g. changing cursor position or editing text.
      
      CPPEditorWidget::updateUses() does not depend on the highlighter, but
      only on the semantic info update.
      
      Task-number: QTCREATORBUG-11367
      Change-Id: Ia9f5ed7c2adc6899995a5d966a20e45b2f87d9e3
      Reviewed-by: default avatarErik Verbruggen <erik.verbruggen@digia.com>
      1f0fd959
  11. Mar 13, 2014
  12. Mar 12, 2014
  13. Mar 11, 2014
  14. Mar 10, 2014
  15. Mar 06, 2014
  16. Mar 05, 2014
Loading