Community
    • 登入

    Notepad++ File Status Auto-Detection not working

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

      See https://github.com/notepad-plus-plus/notepad-plus-plus/blob/master/PowerEditor/visual.net/notepadPlus.vcxproj

      <PlatformToolset>v140_xp</PlatformToolset> is used, so build should still be compatible with Win XP SP3.

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

        @chcg

        thank you for clarification - I was searching for v120_xp but in retrospect it makes sense
        that it is called v140_xp if using a new toolset.

        Any idea what might cause this behavior?

        Cheers
        Claudia

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