Community
    • 登入

    Fix corrupted txt file (NULL)

    已排程 已置頂 已鎖定 已移動 Help wanted · · · – – – · · ·
    corruptedfixtextnullfile
    116 貼文 39 Posters 189.2k 瀏覽
    正在載入更多貼文
    • 從舊到新
    • 從新到舊
    • 最多點贊
    回覆
    • 在新貼文中回覆
    登入後回覆
    此主題已被刪除。只有擁有主題管理權限的使用者可以查看。
    • Mark CageM
      Mark Cage
      最後由 Mark Cage 編輯

      Had the same catastrophe today. System Crashed (windows 7). Npp ver. 6.9.

      Text file contents coming as null.

      Used the recuva technique and got everything back!!

      Learnt about verbose backup and updating to the latest Npp version.

      Thank you all.

      Scott SumnerS 1 條回覆 最後回覆 回覆 引用 0
      • Scott SumnerS
        Scott Sumner @Mark Cage
        最後由 編輯

        @Mark-Cage said:

        …updating to the latest Npp version

        Most people in your situation say something different…Like “I’m switching to Sublime / Atom”…

        1 條回覆 最後回覆 回覆 引用 1
        • Mark CageM
          Mark Cage
          最後由 編輯

          @Scott-Sumner said:

          Sublime / Atom

          I love npp! There might some issues in the other text editors as well

          Just enable verbose backup and i think i should be fine :)

          Scott SumnerS 1 條回覆 最後回覆 回覆 引用 1
          • Scott SumnerS
            Scott Sumner @Mark Cage
            最後由 編輯

            @Mark-Cage

            Just enable verbose backup and i think i should be fine

            There are some people with the theory that that actually contributes to the NUL problem (i.e. they postulate that if backup was off it wouldn’t/couldn’t occur). I can attest that the one time the NUL problem happened to me, I did indeed have verbose backup turned on. I had a bunch of files that the v.b. creates (so I thought "No problem!), but they too were all filled with NUL, back to the time at which I had started the current Notepad++ run. I lost about 2 hours of work when I should have only lost about 2 seconds worth (I am old-school and am “all over” the Save key…constantly). YMMV. :-)

            1 條回覆 最後回覆 回覆 引用 3
            • Mark CageM
              Mark Cage
              最後由 編輯

              That sucks! i hadn’t turned back up on before this happened . Also use the save key all the time. But the null error still occurred. Can only pray that it doesn’t happen again :)

              1 條回覆 最後回覆 回覆 引用 0
              • Lucky ErumeborL
                Lucky Erumebor
                最後由 編輯

                same thing just happened to me… v7.5.8

                1 條回覆 最後回覆 回覆 引用 0
                • Claudia FrankC
                  Claudia Frank
                  最後由 編輯

                  Gotcha!!

                  Hopefully I can reproduce it under debugger.

                  Cheers
                  Claudia

                  1 條回覆 最後回覆 回覆 引用 4
                  • Jeremy JordanJ
                    Jeremy Jordan
                    最後由 編輯

                    yeah but this is more corrupted because my txt file named Oofood instead of saying words… it came up with this: ¶¬®°~Z…yàãñöpý²Ã”¦ Vš¸:lŸã"Œ7$2¥‰+s;¡*p“‘A\ìö© /2[ÐnUû“H–™øk´­b|Ë*Y÷T¾t=¥t˜»¤RÞ~YP6*•°ÉÜü´ÄZ¤ï°³Ê}=ƒ0såÁ¨,©°¯Îß”1XŽÁb€(Þ}Y4ýµB™yª
                    @¶e§‹Ê ©öà[_dy ‘rü±wD˜ŒíÝP ÉïCŸ;Q¬|it³JÔÈX5[7Dë¹ã!ä•0ynöWª@»C²É;]C„rÏ<õª—$5ûUôdx3×2`ö¦3õÆš&ÛgpÖǝ$³:Þ"АµÙ&¹ŠQâ‚zg¾ðõ^5öŽ(^³Eð«N\§DFNi†“»©˜.Ù/ã« &æ-”&ÚÏŠû²š¢ÔÿÐØ0\m;B–@8ÍÛv¶ïË‘®xJU ´ ôP
                    
                    ’Ð 6ÝÁ¤ªÀ½4;X¶y•kÕñ”ø¡ÇéVËè×_ýÔÇ9|E’Xújƒ /6O´ûv øEî\ê±s5T)%,T,Âa†L c£"ÇÕz ˆ ¯îêjøRÖÓ:òo›7ÆÓGmyEU¶Xo‘Å«·øÈëJõ¾Äwå¦B<\©¶ÖÙâÎ,@´~_Nä&BkBc&AŽ…Zºc

                    Claudia FrankC 1 條回覆 最後回覆 回覆 引用 0
                    • Claudia FrankC
                      Claudia Frank @Jeremy Jordan
                      最後由 編輯

                      @Jeremy-Jordan

                      but this looks like the file content has been replaced with binary data - hard to believe that npp is responsible for that.
                      I assume that your issue must be caused by something else.

                      Cheers
                      Claudia

                      1 條回覆 最後回覆 回覆 引用 1
                      • PeterJonesP
                        PeterJones
                        最後由 編輯

                        @Jeremy-Jordan,

                        As @Claudia-Frank said, that’s binary data, not just NULLs. If that’s really happened to a file that was plain text, you’ve either edited it with some other editor which has encoded it, or the file has been encrypted. If you weren’t expecting the file to be encrypted, then there’s (unfortunately) a very high probability you’ve been infected with a virus, ransomware, or other malware. Please run a reputable scanner ASAP.

                        Since many forms of viruses, ransomware, and other malware make your data unrecoverable, I am hoping you have a separate backup of any essential data. But don’t try to access that backup until you know the computer you are on is clean – I’d hate for your backup to become infected as well.

                        1 條回覆 最後回覆 回覆 引用 2
                        • Michael SimcichM
                          Michael Simcich
                          最後由 編輯

                          I have an interesting variation on a theme to report. Yesterday I worked most of the day on a set of text files; some xls files, and asp.net files loaded into visual studio. Most work was done by 9 pm; I had saved those files many times during the day’s work. At about 11:30 pm the pc became increasingly unresponsive and eventually I had to reset it. The pc booted normally. I left it on all night so that the daily Acronis backup, which seemed to have stalled in the evening (and may have been the source of the system failure) could do it’s thing.

                          This AM I found that all of those files (.net, .xls, .txt in notepad++) were corrupted, with the text and .net files showing as NULL everywhere. I don’t have Backup on Save turned on. Session snapshot and periodic backup are on, probably default settings as I’ve never known about np++ backup features before today, but there are no recent files in that dir. I have various types of backups to fall back on.

                          But the main reason I’m posting this is that the NULL blowout happened to other files that were not in use by notepad++. I personally don’t recall ever having file data losses like this before, ever; but it doesn’t seem to be true that it’s an issue with notepad++, or at least only notepad++.

                          Claudia FrankC 1 條回覆 最後回覆 回覆 引用 2
                          • Claudia FrankC
                            Claudia Frank @Michael Simcich
                            最後由 Claudia Frank 編輯

                            @Michael-Simcich

                            you are right, this issue can happen with any software if the requirements are fulfilled.
                            Basically it is this, a thread has opened the file and then something happens which forces
                            the operating system to kill the process. In this situation a thread might not be able to close
                            the file correctly which then results in a corrupted file.

                            I’m able to reproduce this with a 32bit npp version and file around ~100MB where backup is enabled and
                            the system is under load. If, for example, I would convert everything to uppercase,
                            under this condition, ~1 out of 10 times npp freezes, dies and backup file only is corrupted.
                            But if you restart npp, then it looks like the real file is corrupted, just because npp loaded the backup file as it wasn’t saved correctly at this time.
                            Unfortunately I wasn’t able to reproduce this behavior running npp under the debugger and
                            haven’t found out yet whether the cpu, memory or io load or a combination of those is needed
                            to reproduce it. This happens, for me, only on a 32bit version of npp with activated backup,
                            on a 64bit version I was not able to reproduce this behavior, even with larger files. Tested with 1GB.

                            Cheers
                            Claudia

                            Michael SimcichM 1 條回覆 最後回覆 回覆 引用 4
                            • pnedevP
                              pnedev
                              最後由 編輯

                              Hi @Claudia-Frank ,

                              Very good analysis indeed.
                              Can I ask you to test your failing scenario with a test build of mine?
                              It is the official v7.5.8 but with a fix I did on the locking mechanics of the file during backup. Here is the 32-bit binary:
                              https://ci.appveyor.com/api/buildjobs/bjaisvrte85g4o0a/artifacts/Notepad%2B%2B.Win32.Unicode Release.exe

                              Thank you for trying this and writing back, I appreciate it.

                              BR

                              Claudia FrankC 2 條回覆 最後回覆 回覆 引用 2
                              • Claudia FrankC
                                Claudia Frank @pnedev
                                最後由 編輯

                                Hi @pnedev

                                Thx for the build, I will do the test later today - need to go to work soon.

                                Cheers
                                Claudia

                                1 條回覆 最後回覆 回覆 引用 2
                                • Michael SimcichM
                                  Michael Simcich @Claudia Frank
                                  最後由 編輯

                                  @Claudia-Frank thanks for that clear explanation.

                                  1 條回覆 最後回覆 回覆 引用 1
                                  • Claudia FrankC
                                    Claudia Frank @pnedev
                                    最後由 Claudia Frank 編輯

                                    @pnedev

                                    I found this file from this issue thread and it seems that this file can be used to confirm that the backup is the culprit.
                                    Unfortunattely your build is crashing also when doing the trim trailing spaces action.
                                    I’m currently running some tests like doing it 100 times in a row and 100 times after restart npp … to see if this is really the case.

                                    The test file is a bit unusual as I described in the issue thread and needs to be investigated as well
                                    but at least it looks like there is a reliable way to crash npp and therefore a chance to find out what it is causing it.
                                    Whether or how NULL backup files are involved can’t be said at the moment.

                                    Cheers
                                    Claudia

                                    1 條回覆 最後回覆 回覆 引用 2
                                    • pnedevP
                                      pnedev
                                      最後由 編輯

                                      Hi @Claudia-Frank ,

                                      Thanks for trying and for pointing to that file.
                                      I can do some tests on my own now.

                                      BR

                                      1 條回覆 最後回覆 回覆 引用 1
                                      • pnedevP
                                        pnedev
                                        最後由 編輯

                                        OK, I think I got what the problem is.
                                        This is the cause for the problem in this issue as well.

                                        Backup is running in a separate thread as can be seen in Notepad_plus.cpp, void Notepad_plus::launchDocumentBackupTask() .
                                        What it does is periodically executing Buffer.cpp, bool FileManager::backupCurrentBuffer() .

                                        Now imagine that we launch a long-running operation in Notepad++ from the user thread.
                                        While it is running and doing its processing on the Scintilla buffer the periodic backup thread kicks.
                                        The bool FileManager::backupCurrentBuffer() is called which GETS THE RAW SCINTILLA BUFFER POINTER here:

                                        FILE *fp = UnicodeConvertor.fopen(fullpath, TEXT("wb"));
                                        if (fp)
                                        {
                                        int lengthDoc = _pNotepadPlus->_pEditView->getCurrentDocLen();
                                        char* buf = (char*)_pNotepadPlus->_pEditView->execute(SCI_GETCHARACTERPOINTER); //to get characters directly from Scintilla buffer

                                        Now backup can be written at once or in portions depending if WcharMbcsConvertor *wmc = WcharMbcsConvertor::getInstance() conversions are needed BUT anyway:

                                        WHILE BACKUP FILE IS BEING WRITTEN FROM THE RAW SCINTILLA BUFFER,
                                        THE SCINTILLA BUFFER ITSELF IS BEING UPDATED BY THE USER LONG RUNNING OPERATION THREAD (THIS MIGHT EVEN INCLUDE BUFFER RELOCATION IF MORE MEMORY ALLOCATION IS NEEDED).

                                        I’ll have to figure out a proper way to fix that now.

                                        1 條回覆 最後回覆 回覆 引用 4
                                        • pnedevP
                                          pnedev
                                          最後由 編輯

                                          One update:

                                          The bool FileManager::backupCurrentBuffer() properly locks LongRunningOperation so the concurrent Scintilla buffer access shouldn’t happen during backup but it seems it still does. Which means the LongRunningOperation lock is not done properly for Trim trailing spaces and Find and Replace in Files and probably in other places.

                                          1 條回覆 最後回覆 回覆 引用 2
                                          • pnedevP
                                            pnedev
                                            最後由 編輯

                                            Hi again @Claudia-Frank ,

                                            Could you please try again with this binary:
                                            https://ci.appveyor.com/api/buildjobs/3tfm2eeubr9hg9y9/artifacts/Notepad%2B%2B.Win32.Unicode Release.exe ?

                                            It has fix for Trim trailing spaces and I cannot reproduce the issue on my side anymore.
                                            Sorry to bother you again, I appreciate your help.

                                            BR

                                            Claudia FrankC 1 條回覆 最後回覆 回覆 引用 2
                                            • 第一個貼文
                                              最後的貼文
                                            The Community of users of the Notepad++ text editor.
                                            Powered by NodeBB | Contributors