Community
    • 登入

    Notepad++ File Status Auto-Detection not working

    已排程 已置頂 已鎖定 已移動 General Discussion
    file statusauto-detectionnot working
    57 貼文 10 Posters 48.3k 瀏覽
    正在載入更多貼文
    • 從舊到新
    • 從新到舊
    • 最多點贊
    回覆
    • 在新貼文中回覆
    登入後回覆
    此主題已被刪除。只有擁有主題管理權限的使用者可以查看。
    • guy038G
      guy038
      最後由 guy038 編輯

      Hi, @claudia-frank, @chcg and All,

      I just confirm the bug : the File Status Auto-Detection mechanism does not work, since the v7.5.2 version, on my Win XP SP3 platform ?!

      Cheers,

      guy038

      1 條回覆 最後回覆 回覆 引用 2
      • chcgC
        chcg
        最後由 編輯

        Maybe we can bisect the problematic range, starting with testing te artifacts from:
        https://ci.appveyor.com/project/donho/notepad-plus-plus/build/1.0.1635
        to see if this also happens with the appveyor images.

        And then maybe
        https://ci.appveyor.com/project/donho/notepad-plus-plus/build/1.0.1582/

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

          @chcg

          this is the last working one

          Language menu and Style configurator sorted alphabetically and use the same language name in the Style configurator as the language menu.

          https://ci.appveyor.com/project/donho/notepad-plus-plus/build/1.0.1526

          this is the first which breaks it

          Switch to VS 2015

          https://ci.appveyor.com/project/donho/notepad-plus-plus/build/1.0.1530

          There were no build from 1.0.1527 to 1.0.1529 due to errors.

          Cheers
          Claudia

          1 條回覆 最後回覆 回覆 引用 0
          • chcgC
            chcg
            最後由 編輯

            But https://ci.appveyor.com/project/donho/notepad-plus-plus/build/1.0.1526 is a Pull request #3726 build, so not a direct successor of Switch to VS 2015 (https://ci.appveyor.com/project/donho/notepad-plus-plus/build/1.0.1530)

            That would be https://ci.appveyor.com/project/donho/notepad-plus-plus/build/1.0.1521,

            with
            https://ci.appveyor.com/project/donho/notepad-plus-plus/build/1.0.1527
            https://ci.appveyor.com/project/donho/notepad-plus-plus/build/1.0.1528

            failing.

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

              @chcg

              sorry, but I don’t get your point.
              I would assume that a build with a lower build number is never a successor of a build
              with a higher build number.

              And what is your concern about the results I’ve posted?

              Cheers
              Claudia

              1 條回覆 最後回覆 回覆 引用 0
              • chcgC
                chcg
                最後由 編輯

                @Claudia-Frank The builds at appveyor not just contain the trunk checkins, but also pull requests which might contain something totally different. Sorry, I meant predecessor.

                I created a branch from the 7.5.1 tag and modified the appveyor config to build VS2013 vs. VS2015 on the appveyor image 2015. So this should reveal if already the switch to VS2015 is causing the trouble.

                See https://ci.appveyor.com/project/chcg/notepad-plus-plus/build/1.0.114, build from https://github.com/chcg/notepad-plus-plus/commits/winxp_autodectection_investigation2

                Since the checkin of the json parser(https://github.com/notepad-plus-plus/notepad-plus-plus/commit/b033d907b29f42f570c21b0bfc0ac60c257f08c4) it is no longer possible to build with VS2013 due to the lack of c++11/14 features needed.

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

                  @chcg

                  Thx for clarification - I will give it a try later and let you know.

                  Cheers
                  Claudia

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

                    @chcg

                    binary with PlatformToolset=v120_xp works
                    but binary with …=v140_xp does not.
                    Hmmm, I see the binaries are different in size
                    but I assume you just changed the toolset version
                    and the rest was kept the same, wasn’t it.

                    I already searched the web, and there are some reports that there are problems
                    on windows xp when using VS2015 onwards but it looks like all of them were solved
                    by setting the compatibility flag aka toolset. Strange.

                    Cheers
                    Claudia

                    1 條回覆 最後回覆 回覆 引用 1
                    • Vitaliy DovganV
                      Vitaliy Dovgan
                      最後由 Vitaliy Dovgan 編輯

                      To be fully compatible with Windows XP, the following compiler’s option may need to be specified:

                      /Zc:threadSafeInit-
                      

                      This one relates to the “magic static” feature in C++ that depends on new TLS implementation available only from Windows Vista/7.
                      In case of Notepad++ plugin (i.e. a DLL file) the absence of this compiler’s option leads to crash (under Windows XP) while trying to use a static variable. In theory it should not have the same dramatic effect in an executable, but who knows? I think it’s worth trying to comile Notepad++ with this option specified.

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

                        @Vitaliy-Dovgan

                        thank you very much for the hint.

                        @chcg

                        If you wouldn’t mind to build one with this flag I would give it a try to see if it resolves the issue.

                        Cheers
                        Claudia

                        1 條回覆 最後回覆 回覆 引用 0
                        • chcgC
                          chcg
                          最後由 編輯

                          There were 3 changes in the appveyor config:

                          1. VM image, as Visual Studio 2013 doesn’t contain vs2015

                          2. calling Microsoft Visual Studio 14.0\VC\vcvarsall.bat for vs2015 build

                          3. using notepadPlus.vs2015.vcxproj for building the vs2015 version.

                          4. couldn’t be avoided. The sourcecode itself is identical and either it is something with the vcxproj for vs2015 which causes the issue or the vcvarsall.bat + the toolset.

                          Maybe the build of scintilla could also have an influence.

                          I will do a rebuild with just the toolset changed and using the notepadPlus.vcxproj also for VS2015.

                          And another one with /Zc:threadSafeInit-

                          1 條回覆 最後回覆 回覆 引用 1
                          • chcgC
                            chcg
                            最後由 編輯

                            First test is available here:
                            https://ci.appveyor.com/project/chcg/notepad-plus-plus/build/1.0.117

                            VS2013 config with PlatformToolset=v140_xp

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

                              @chcg

                              v120 build works, v140 does not.

                              Cheers
                              Claudia

                              1 條回覆 最後回覆 回覆 引用 0
                              • chcgC
                                chcg
                                最後由 編輯

                                VS2015 build with /Zc:threadSafeInit- at https://ci.appveyor.com/project/chcg/notepad-plus-plus/build/1.0.118

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

                                  @chcg

                                  thx, will do the test and report the status later (2-3 hours).

                                  Cheers
                                  Claudia

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

                                    @chcg

                                    sorry but additional compiler flag does not work either.

                                    Cheers
                                    Claudia

                                    1 條回覆 最後回覆 回覆 引用 0
                                    • Vitaliy DovganV
                                      Vitaliy Dovgan
                                      最後由 編輯

                                      Looks like time to use additional logging then. I mean, logging around file status detection. (I briefly looked at the code, and it’s not obvious at the first glance what exactly can go wrong.)

                                      1 條回覆 最後回覆 回覆 引用 1
                                      • Vitaliy DovganV
                                        Vitaliy Dovgan
                                        最後由 編輯

                                        I’ve found out the cause of the problem. In VS2015, the stupids from Microsoft have broken _wstat for Windows XP! According to a simple change inside the file “PowerEditor\src\ScitillaComponent\Buffer.cpp”:

                                        int st = generic_stat(_fullPathName.c_str(), &buf);
                                        char s[512];
                                        sprintf(s, "Buffer::checkFileState() -> %d, errno %d, FileName \"%S\"", st, errno, _fullPathName.c_str());
                                        writeLog(_T("1.txt"), s);
                                        

                                        one can notice that _wstat always returns -1 under Windows XP with errno 22 (EINVAL).
                                        So the fix seems to be to replace _wstat with some native WinAPI function, since we can not rely on VS2015’s CRT anymore.

                                        1 條回覆 最後回覆 回覆 引用 1
                                        • chcgC
                                          chcg
                                          最後由 編輯

                                          See https://github.com/joncampbell123/dosbox-x/issues/403 and https://github.com/joncampbell123/dosbox-x/issues/438 which also suffers from this issue. From https://stackoverflow.com/questions/6566978/whats-the-difference-between-struct-stat64-and-struct-stati64-on-win32, maybe we are facing a 64bit issue, see https://msdn.microsoft.com/en-US/library/14h5k7ff.aspx. What happens on using _wstat64.

                                          1 條回覆 最後回覆 回覆 引用 0
                                          • Vitaliy DovganV
                                            Vitaliy Dovgan
                                            最後由 編輯

                                            Yes, it could be that _USE_32BIT_TIME_T needs to be defined for Windows XP. On the other hand, it was reported that defining _USE_32BIT_TIME_T, in its turn, creates problems with std::chrono… Just madness.

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