Дальнейшее развитие версии 1.5, переделано под API Far 3.0.
Декодер JLS.pvd использует библиотеку CharLS.
Copyright (c) 2007-2010, Jan de Vaan
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of my employer, nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PS: API как было убогим в Far 2, так и осталось...
PictureView 3 — просмотр изображений различных форматов
Posted: Sat 10 Nov, 2018 10:12
by 586
Latest post of the previous page:
Подскажите, плиз, можно ли как-нибудь победить эту ошибку:
Error loading plugin
C:\Program Files\Far\Plugins\PictureView3\0PictureView.dll
Отказано в доступе.
FAR 3.x, плагин скачан из шапки
PictureView 3 — просмотр изображений различных форматов
Posted: Sat 10 Nov, 2018 19:12
by SEt
С такой информацией вряд ли кто поможет.
Какая версия Far'а? Система XP 32-bit? Что происходит в чистом Far'е, если это единственный плагин?
PictureView 3 — просмотр изображений различных форматов
Posted: Mon 12 Nov, 2018 13:39
by 586
Да, Win XP/32бит. Ошибка выскакивает в любой версии FAR от 1.7x, до последней доступной 3.х. Когда плагин единственный при запуске фара выскакивает та же самая ошибка.
PictureView 3 — просмотр изображений различных форматов
Posted: Mon 12 Nov, 2018 15:48
by Smitis
586 wrote: ↑Sat 10 Nov, 2018 10:12
Отказано в доступе.
Интересно, почему "отказано в доступе"? В плагине присутствует вызов GetGestureInfo из user32, который отсутствует в XP/2003. У меня под Win2003 так. Под единственной оставшейся XP тоже ошибка, но там я сейчас посмотреть не могу из-за чего. Скорее всего, тоже самое.
PictureView 3 — просмотр изображений различных форматов
Posted: Mon 12 Nov, 2018 16:23
by 2useven10
Smitis wrote: ↑Mon 12 Nov, 2018 15:48
В плагине присутствует вызов GetGestureInfo из user32, который отсутствует в XP/2003.
В 'последней версии, работающей под XP' нет.
PictureView 3 — просмотр изображений различных форматов
Posted: Mon 12 Nov, 2018 17:54
by Smitis
2useven10 wrote: ↑Mon 12 Nov, 2018 16:23
В 'последней версии, работающей под XP' нет.
Это в версии, которая официально задекларирована под XP (2014.08.13). В реальности, вплоть до предыдущей версии 2017.10.18 работало и под XP и под 2003, хотя они официально вроде как и не поддерживались. Хотя 586 не написал версию, но брал "из шапки", у него скорее всего версия от 2014. Каюсь, не посмотрел, что в шапке только эта версия, поэтому моё замечание к нему, скорее всего, не относится.
PictureView 3 — просмотр изображений различных форматов
Posted: Tue 13 Nov, 2018 00:27
by SEt
Могу порекомендовать запустить Process Monitor и отфильтровать по статусу Access Denied.
PictureView 3 — просмотр изображений различных форматов
Posted: Tue 13 Nov, 2018 13:46
by SEt
Ещё мысль: антивирус. Если он есть – попробуйте его удалить (не просто 'выключить', а именно удалить).
PictureView 3 — просмотр изображений различных форматов
Posted: Wed 14 Nov, 2018 14:05
by 586
Посмотрел Process Monitor'ом - ошибка возникает при обращении к direct draw:
UPD Всё, спасибо, разобрался. Слетели атрибуты безопасности к файлу ddraw.dll, из-за этого и возникала ошибка.
PictureView 3 — просмотр изображений различных форматов
Posted: Fri 16 Nov, 2018 21:47
by DV
Какой-то эпичный глюк нашёл... Воспроизводится с PictureView3_20140813_last_xp под Far30b5005.x86, Far30b5226.x86 и Far30b5317.x86.
Есть у меня папка %USERPROFILE%\Downloads, и в ней - штук 300 разных файлов, в их числе файл "scan1.jpg".
Если нажать на нём F3 (просмотр картинки в PictureView) и нажать "+" (увеличение масштаба), то при обычной сортировке по имени файлов всё в порядке.
А теперь, почему я вспомнил про сортировку. Если в файловой панели нажать Ctrl+F5 (сортировка по дате/времени) и теперь на том же файле "scan1.jpg" нажать F3 и "+", то FAR или подвисает или вылетает.
Воспроизводится с чистым FAR, с созданным с нуля профилем (настройками) у которого в папке Plugins только PictureView.
Однако, если этот же самый файл "scan1.jpg" скопировать из папки %USERPROFILE%\Downloads в другую папку, и проделать описанные выше действия там, то FAR не подвисает и не вылетает. Какая-то мистика. Как исследовать?
Возможно, в исследованиях мог бы помочь FExcept - но я не представляю, как его активировать в FAR3...
PictureView 3 — просмотр изображений различных форматов
Первым делом скачайте PDB ровно для своей сборки Фара (в т.ч. той же битности). Файл Far.pdb положите рядом с Far.exe, запустите Фар без прочих плагинов и воспроизведите ошибку. Если подвиснет, то создайте мини-/дамп процесса (например, с помощью Task Manager'а — в контекстном меню процесса на вкладке Details пункт Create Dump). Если всё время вылетает, притом без красного окошка в Фаре, где тоже можно создать дамп, то надо действовать, как говорит Майкрософт. А если вылетает с красным окошком, то для начала откройте так call stack и скопируйте его сюда как текст.
DV wrote: ↑Fri 16 Nov, 2018 21:47
Возможно, в исследованиях мог бы помочь FExcept - но я не представляю, как его активировать в FAR3...
Надо папку FExcept положить в папку Фара — до всего, что написано выше.
P.S. Кстати, а если в той же папке Downloads сделать копии этого файла, одна из которых чуть-чуть (на долю секунды) новее, а другая чуть-чуть старше (можно выставить через свойства файла), то падение/зависание воспроизводится?
PictureView 3 — просмотр изображений различных форматов
> opengl32.dll!___glSpanPackUbyte@16() Unknown
opengl32.dll!@__glCopyImage4@8() Unknown
opengl32.dll!@__glGenericPickCopyImage@12() Unknown
opengl32.dll!___glim_TexSubImage2D@40() Unknown
opengl32.dll!@sbs_glTexSubImage2D@8() Unknown
opengl32.dll!_glsrvAttention@16() Unknown
opengl32.dll!___wglAttention@0() Unknown
opengl32.dll!_glsbAttention@0() Unknown
opengl32.dll!_glcltTexSubImage2D@36() Unknown
0PictureView.dll!0fe444f9() Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for 0PictureView.dll]
0PictureView.dll!0fe51856() Unknown
Far.exe!ExceptionTestHook(Manager::Key key) Line 927 C++
[External Code]
0PictureView.dll!0fe43231() Unknown
0PictureView.dll!0fe4337d() Unknown
[External Code]
0PictureView.dll!0fe53d31() Unknown
0PictureView.dll!0fe48572() Unknown
[External Code]
Far.exe!compare_natural_base(const std::basic_string_view<wchar_t,std::char_traits<wchar_t> > Str1, const std::basic_string_view<wchar_t,std::char_traits<wchar_t> > Str2, const bool Numeric, const bool CaseSensitive) Line 257 C++
Far.exe!compare_natural_numeric_icase(const std::basic_string_view<wchar_t,std::char_traits<wchar_t> > Str1, const std::basic_string_view<wchar_t,std::char_traits<wchar_t> > Str2) Line 286 C++
0PictureView.dll!0fe49058() Unknown
Far.exe!Plugin::ExecuteFunctionSeh<Plugin::ExecuteStruct<24,1>,ProcessViewerEventInfo * &>(Plugin::ExecuteStruct<24,1> & es, ProcessViewerEventInfo * & <Args_0>) Line 364 C++
Far.exe!seh_invoke<<lambda_9aca6aebdd755b561f066cc4efc09e1b>,<lambda_df7bbd962e907e76d2a7ec755bd779ce>,<lambda_d2cebbc17c241d52c2a89e95d6a50fd6> >(Plugin::ExecuteFunction::__l2::<lambda_9aca6aebdd755b561f066cc4efc09e1b> && Callable, seh_invoke_with_ui::__l2::<lambda_df7bbd962e907e76d2a7ec755bd779ce> && Filter, Plugin::ExecuteFunction::__l2::<lambda_d2cebbc17c241d52c2a89e95d6a50fd6> && Handler) Line 74 C++
Far.exe!Plugin::ProcessViewerEvent(ProcessViewerEventInfo * Info) Line 944 C++
Far.exe!PluginManager::ProcessViewerEvent(int Event, void * ViewerInstance, const Viewer *) Line 861 C++
[External Code]
Far.exe!Manager::Commit() Line 911 C++
Far.exe!Manager::EnterMainLoop() Line 594 C++
Far.exe!MainProcess(const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & EditName, const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & ViewName, const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & DestName1, const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & DestName2, int StartLine, int StartChar) Line 296 C++
Far.exe!mainImpl(const range<wchar_t const * const *> Args) Line 774 C++
Far.exe!wmain_seh(int Argc, const wchar_t * const * Argv) Line 802 C++
Far.exe!main::__l2::<lambda>() Line 838 C++
Far.exe!seh_invoke<int <lambda>(void),<lambda_4540896a4f50601624f7280fdc0ed885>,int <lambda>(void) >(main::__l2::int <lambda>(void) && Filter, seh_invoke_with_ui::__l2::<lambda_4540896a4f50601624f7280fdc0ed885> &&) Line 74 C++
Far.exe!main() Line 832 C++
[External Code]
Выходит, в opengl32.dll падает?
PictureView 3 — просмотр изображений различных форматов
Posted: Fri 16 Nov, 2018 22:17
by HaRT
DV wrote: ↑Fri 16 Nov, 2018 22:14
в opengl32.dll падает?
Похоже на то, но причины могут быть разнообразные.
Попробуйте то, что я написал в P.S..
Ну и посмотрите, наисвежайшие ли у вас драйверы видяшки, — от них очень многое зависит.
PictureView 3 — просмотр изображений различных форматов
Posted: Sat 17 Nov, 2018 00:11
by DrKnS
DV wrote: ↑Fri 16 Nov, 2018 21:47
Воспроизводится с чистым FAR, с созданным с нуля профилем (настройками) у которого в папке Plugins только PictureView.
0. 0PictureView.dll!0fe48572()
1. [External Code]
2. Far.exe!compare_natural_base Line 257
3. Far.exe!compare_natural_numeric_icase Line 286
4. 0PictureView.dll!0fe49058()
5. Far.exe!Plugin::ExecuteFunctionSeh Line 364
Я представляю, как могло получиться 5-4-3: фар вызвал плагин, плагин захотел что-то посортировать, используя LStrnicmp API.
Но 2-1-0 - это дичь: compare_natural_base Line 257 - это вызов WinAPI CompareStringW.
Без мутных хуков, видимо, не обошлось.
PictureView 3 — просмотр изображений различных форматов
Posted: Sat 17 Nov, 2018 09:03
by SEt
Падает внутри opengl32.dll на вызове TexSubImage2D. То, что на отдельном файле не наблюдается легко объяснить: в PV же опережающее декодирование – оно сразу переходит декодировать соседние, и проблемы, скорее всего, именно на соседних.
DrKnS, что дивного то? "[External Code]" явно говорит о том, что дальше стек VS просто придумала, и он не имеет ничего общего с реальностью.