• Icon: Bug Bug
    • Resolution: Fixed
    • Icon: High High
    • None
    • 1.9.9.20, 1.9.10.0
    • None
    • Operating System: Windows 10

    • Severity 2 - Major

      Everytime I open SourceTree I get this error message:

      SpellChecker Error

      SourceTree detected the following invalid Dictionary file references.
      These are known to cause performance issues.

      Do you want to remove these invalid dictionaries?

      [ Yes ] [ No ]

       Pressing "Yes" open SourceTree normally but the error appears the next time I open SourceTree.

      How to solve it?

          Form Name

            [SRCTREEWIN-6674] SpellChecker Error

            These changes will appear in the 3.4.6 release

            Oleksandr Naumenko (Inactive) added a comment - - edited These changes will appear in the 3.4.6 release

            Guys,

            I stopped using SourceTree back in 2018, when you started requiring Bitbucket accounts (God only knows why; I had an Atlassian account, and I can't figure out why that wasn't good enough).

            But I do use other Atlassian products (Jira Cloud and Jira Service Management).

            This bug, marked as severity 2 and high priority, has now remained open and unresolved  for FIVE YEARS.

            And as an Atlassian customer, I find that alarming.

            What's the problem here? Did you guys just decide you didn't want to fix the problem?

            Steve Sobol added a comment - Guys, I stopped using SourceTree back in 2018, when you started requiring Bitbucket accounts (God only knows why; I had an Atlassian account, and I can't figure out why that wasn't good enough). But I do use other Atlassian products (Jira Cloud and Jira Service Management). This bug, marked as  severity 2 and  high priority , has now remained open and unresolved  for  FIVE YEARS. And as an Atlassian customer, I find that alarming. What's the problem here? Did you guys just decide you didn't want to fix the problem?

            Deleting my Microsoft Office custom dictionary worked, but I was only willing to do it because the dictionary had a handful of entries. And I did something today, I think, that caused the custom dictionary to be created again, so I'm getting the message again.

            Why? – WHY IS THIS HAPPENING when I have the "spell-check commit messages" feature DISABLED?

            Steve Sobol added a comment - Deleting my Microsoft Office custom dictionary worked, but I was only willing to do it because the dictionary had a handful of entries. And I did something today, I think, that caused the custom dictionary to be created again, so I'm getting the message again. Why? –  WHY IS THIS HAPPENING when I have the "spell-check commit messages" feature DISABLED?

            Running 1.9.10.0 on Win 10 and disabling spell check does not help..

            Deleted Account (Inactive) added a comment - - edited Running 1.9.10.0 on Win 10 and disabling spell check does not help..

            cdokolas added a comment -

            @PaulWad Quite right. I was only opening and immediately closing SourceTree, so it didn't have a chance to recreate the faulty registry entry.

            Nice catch!

            cdokolas added a comment - @PaulWad Quite right. I was only opening and immediately closing SourceTree, so it didn't have a chance to recreate the faulty registry entry. Nice catch!

            PW added a comment -

            @Constantine, no, removing the empty line is NOT a permanent fix in v1.9.10.0. However, there seems to be 2 - unacceptable - ways to permanently avoid the problem (once the empty line has been removed):

            1. Open tools->options and disable "spell check commit messages".
              ...or...
            2. Make sure the commit message input field is never visible (i.e. select the branch graph view, and never make commits).

             

            PW added a comment - @Constantine, no, removing the empty line is NOT a permanent fix in v1.9.10.0. However, there seems to be 2 - unacceptable - ways to permanently avoid the problem (once the empty line has been removed): Open tools->options and disable "spell check commit messages". ...or... Make sure the commit message input field is never visible (i.e. select the branch graph view, and never make commits).  

            cdokolas added a comment -

            Can't find any mention of this... It appears that editing the registry entry to remove the empty line is a permanent fix with SourceTree v1.9.10.0 (i.e. no more messages, ever). Now, if only SourceTree made the fix itself, it would make everyone happier

            cdokolas added a comment - Can't find any mention of this... It appears that editing the registry entry to remove the empty line is a permanent fix with SourceTree v1.9.10.0 (i.e. no more messages, ever). Now, if only SourceTree made the fix itself, it would make everyone happier

            JacobRMED added a comment -

            Also seeing this in Windows 8.1 with 1.9.10.0. Cant get rid of it, except by disabling the spell checker 

            JacobRMED added a comment - Also seeing this in Windows 8.1 with 1.9.10.0. Cant get rid of it, except by disabling the spell checker 

            The startup check appears to complain about the "empty" dictionary entry in the MULTI_SZ.

            On my Win10 1.9.10.0 machine, this is actually placed there by the RuntimeBroker.exe process which appears to "carry out" dictionary changes. It looks to erroneously include an extra (double null-byte). It appears that it is the adding/removing of SourceTree's own "Temporary" dictionary that causes these RuntimeBroker.exe updates. This means that a start/stop cycle of SourceTree will "corrupt" this entry - guaranteeing the problem EVERY SINGLE run.

            Technically, empty strings should not be possible with MULTI_SZ encoding (null-terminated strings, terminated by an empty string). DotNet decoding of MULTI_SZ uses the retrieved buffer length (and not an empty string) to terminate decoding. This results in the extra "empty" string at the end.

            You can't rely upon the RuntimeBroker.exe process getting fixed. You also can't rely upon the RuntimeBroker.exe process NOT getting fixed. 

            I believe the best answer would be that SourceTree simply not class the extra empty string at the end of the MULTI_SZ as an error.
            In SourceTree.Configuration.WpfSpellCheckerPreFlightCheck.Run skip verification if it's the last entry && empty.

            Ivan Hamilton added a comment - The startup check appears to complain about the "empty" dictionary entry in the MULTI_SZ. On my Win10 1.9.10.0 machine, this is actually placed there by the RuntimeBroker.exe process which appears to "carry out" dictionary changes. It looks to erroneously include an extra (double null-byte). It appears that it is the adding/removing of SourceTree's own "Temporary" dictionary that causes these RuntimeBroker.exe updates. This means that a start/stop cycle of SourceTree will "corrupt" this entry - guaranteeing the problem EVERY SINGLE run. Technically, empty strings should not be possible with MULTI_SZ encoding (null-terminated strings, terminated by an empty string). DotNet decoding of MULTI_SZ uses the retrieved buffer length (and not an empty string) to terminate decoding. This results in the extra "empty" string at the end. You can't rely upon the RuntimeBroker.exe process getting fixed. You also can't rely upon the RuntimeBroker.exe process NOT getting fixed.  I believe the best answer would be that SourceTree simply not class the extra empty string at the end of the MULTI_SZ as an error. In SourceTree.Configuration.WpfSpellCheckerPreFlightCheck.Run skip verification if it's the last entry && empty.

            Same here.  Windows 10, started in SourceTree v1.9.9.20 and continues in v1.9.10.0

            Phany Langille added a comment - Same here.  Windows 10, started in SourceTree v1.9.9.20 and continues in v1.9.10.0

            I have this error too, on Windows 8.1.

            Jonathan Huizingh added a comment - I have this error too, on Windows 8.1.

            PW added a comment -

            Now I just noticed something new. When SourceTree starts it creates a new dictionary file (e.g. xljwxlxe.dic) under %localappdata%\Temp and adds the dictionary to the previously mentioned registry entry (along with the illegal empty line). The dictionary file has the following contents:

            SourceTree
            Atlassian
            Bitbucket
            GitHub
            JIRA

            When SourceTree closes, it removes the dictionary again, but leaves the empty line in the registry.

            PW added a comment - Now I just noticed something new. When SourceTree starts it creates a new dictionary file (e.g. xljwxlxe.dic) under %localappdata%\Temp and adds the dictionary to the previously mentioned registry entry (along with the illegal empty line). The dictionary file has the following contents: SourceTree Atlassian Bitbucket GitHub JIRA When SourceTree closes, it removes the dictionary again, but leaves the empty line in the registry.

            PW added a comment - - edited

            It appears that SourceTree itself is creating the empty entry.

            If I use regedit to remove the extra empty line (one of the 2 newline characters) from _ Global _ under

            HKEY_CURRENT_USER\SOFTWARE\Microsoft\Spelling\Dictionaries

            then SourceTree will start up without the error message the next time. But when it starts, the extra empty line will be created again in that registry entry!

            PW added a comment - - edited It appears that SourceTree itself is creating the empty entry. If I use regedit to remove the extra empty line (one of the 2 newline characters) from _ Global _ under HKEY_CURRENT_USER\SOFTWARE\Microsoft\Spelling\Dictionaries then SourceTree will start up without the error message the next time. But when it starts, the extra empty line will be created again in that registry entry!

            minnsey added a comment -

            Maybe SourceTree could instead log these invalid entries somewhere and never consider them next time it is launched since it is known that they can reappear? Even better, maybe log the user's answer (yes/no) the first time, and reapply this answer automatically and silently on future launches. I think most users don't really care that much about the actual message displayed, they simply don't want to be bothered by a continuous message prompt.

            Yes this is what we were thinking of.

            See for the background https://connect.microsoft.com/VisualStudio/feedback/details/2153484/wpf-net-application-hangs-when-spell-check-is-enabled-on-controls-which-derive-from-textboxbase

            minnsey added a comment - Maybe SourceTree could instead log these invalid entries somewhere and never consider them next time it is launched since it is known that they can reappear? Even better, maybe log the user's answer (yes/no) the first time, and reapply this answer automatically and silently on future launches. I think most users don't really care that much about the actual message displayed, they simply don't want to be bothered by a continuous message prompt. Yes this is what we were thinking of. See for the background https://connect.microsoft.com/VisualStudio/feedback/details/2153484/wpf-net-application-hangs-when-spell-check-is-enabled-on-controls-which-derive-from-textboxbase

            fmigneault added a comment - - edited

            Michael,

            If the dialog simply gets adjusted to display a better message when empty registry entries are found, it will be just as annoying as having the current one since it will still be prompted every time SourceTree is launched. 

            Maybe SourceTree could instead log these invalid entries somewhere and never consider them next time it is launched since it is known that they can reappear? Even better, maybe log the user's answer (yes/no) the first time, and reapply this answer automatically and silently on future launches. I think most users don't really care that much about the actual message displayed, they simply don't want to be bothered by a continuous message prompt.

            In the meantime, as mentioned by Rowan, providing the affected registry entries could help investigate the source of their repetitive appearance. 

             

             

            fmigneault added a comment - - edited Michael, If the dialog simply gets adjusted to display a better message when empty registry entries are found, it will be just as annoying as having the current one since it will still be prompted every time SourceTree is launched.  Maybe SourceTree could instead log these invalid entries somewhere and never consider them next time it is launched since it is known that they can reappear? Even better, maybe log the user's answer (yes/no) the first time, and reapply this answer automatically and silently on future launches. I think most users don't really care that much about the actual message displayed, they simply don't want to be bothered by a continuous message prompt. In the meantime, as mentioned by Rowan, providing the affected registry entries could help investigate the source of their repetitive appearance.     

            rwyborn added a comment - - edited

            Michael,

            Can you please let us know which section of the registry is being checked? I can clean boot Win 10, run no other apps and only run SourceTree multiple times (no other apps) and I still get that error message every time.

            So as far as I can see either SourceTree is not cleaning up those blank entries properly, or it is the one creating them to begin with.

            rwyborn added a comment - - edited Michael, Can you please let us know which section of the registry is being checked? I can clean boot Win 10, run no other apps and only run SourceTree multiple times (no other apps) and I still get that error message every time. So as far as I can see either SourceTree is not cleaning up those blank entries properly, or it is the one creating them to begin with.

            minnsey added a comment -

            Hi

            This dialog appears when SourceTree detects registry entries for non-existent custom dictionary files. This is due to a bug in Windows 10 spell checker. The dialog should, and does, list the paths of those files. However it now appears it is possible to get empty paths in the registry settings, hence the dialog appearing with no files listed. The dialog can re-appear because programs can cause these invalid registry settings to re-appear, hence SourcreTree will prompt again to delete them.

            SourceTree includes this behaviour because it is possible to have multiple invalid files listed in the registry and this then slows down switching between repository views.

            We will adjust the dialog to display a better message when blank entries are found.

            In the meantime please just click 'Yes' when the dialog appears.

             

            minnsey added a comment - Hi This dialog appears when SourceTree detects registry entries for non-existent custom dictionary files. This is due to a bug in Windows 10 spell checker. The dialog should, and does, list the paths of those files. However it now appears it is possible to get empty paths in the registry settings, hence the dialog appearing with no files listed. The dialog can re-appear because programs can cause these invalid registry settings to re-appear, hence SourcreTree will prompt again to delete them. SourceTree includes this behaviour because it is possible to have multiple invalid files listed in the registry and this then slows down switching between repository views. We will adjust the dialog to display a better message when blank entries are found. In the meantime please just click 'Yes' when the dialog appears.  

            fmigneault added a comment -

            Still having this issue here under Windows 10 & SourceTree 1.9.10.0.

            This issue appeared in version 1.9.9.20.

            fmigneault added a comment - Still having this issue here under Windows 10 & SourceTree 1.9.10.0. This issue appeared in version 1.9.9.20.

            cdokolas added a comment - - edited

            Still there with v1.9.10.0

            cdokolas added a comment - - edited Still there with v1.9.10.0

            Benjamin Fernandez added a comment - - edited

            I get this message when I start de app and when I check out a branch from Bitbucket on the web.

            I get an empty list too.

            Benjamin Fernandez added a comment - - edited I get this message when I start de app and when I check out a branch from Bitbucket on the web. I get an empty list too.

            cdokolas added a comment - - edited

            Like @jeronevw, I get nothing in the list; though I did get the first couple of times I started the app.
            [Edit: that is, the first couple of times after the upgrade to 1.9.9.20]

            cdokolas added a comment - - edited Like @jeronevw, I get nothing in the list; though I did get the first couple of times I started the app. [Edit: that is, the first couple of times after the upgrade to 1.9.9.20]

            jerone vw added a comment -

            Same issue after upgrading...

            Also it says "the following"... but without listing anything!

            jerone vw added a comment - Same issue after upgrading... Also it says "the following"... but without listing anything!

            +1 It's the same on my machine: Windows 10 and v1.9.9.20.

            Marcel (Inactive) added a comment - +1 It's the same on my machine: Windows 10 and v1.9.9.20.

            cdokolas added a comment -

            Same here. Windows 10 and v1.9.9.20.

            cdokolas added a comment - Same here. Windows 10 and v1.9.9.20.

            rwyborn added a comment -

            I also have this issue (Windows 10). Getting very annoying clicking through that dialog all the time.

            It only started happening when I upgraded to 1.9.9.20

            rwyborn added a comment - I also have this issue (Windows 10). Getting very annoying clicking through that dialog all the time. It only started happening when I upgraded to 1.9.9.20

              e85ff1f4514c Vipin Yadav (Inactive)
              eb792aac5398 Benjamin Fernandez
              Affected customers:
              17 This affects my team
              Watchers:
              20 Start watching this issue

                Created:
                Updated:
                Resolved: