Пошли первые установки и сразу вижу что программа дает крэши у пользователей. В программе есть анализ интернет-страниц, используется htmlagilitypack и webbrowser и они дают креши и зависончики с переполнениями стэка (пак) в зависимости от загружаемых веб-страниц. Что МС, что опенсорс, бажат. То есть на некоторых страницах. Вроде не часто, будь это в корпоративе, описал бы как багофичу с обещанием исправить в следующих версиях. Но продукт для домашних пользователей. Как это исправить я знаю — выкинуть пак и использовать хромиум или самый дурной вариант вынести все в сервис. Но не хотелось бы сейчас это делать, поскольку нужно сначала вообще определиться пойдет или нет. Чем можно оперативно без лишнего переписывания подавить крэши библиотек?
MP>Качественными тестами и отладкой. Вcтраиванием отладочных библиотек типа EurekaLog. Обращением в поддержку использованных библиотек.
Мимо. Даже коммерческие продукты не исправляют свои баги в достаточной степени, а уж мечтать о техподдержке со стороны МС и не приходится. Вся их техподдержка всегда заключалась в том, что бы объяснить что так оно и будет всегда работать. Хоть убейся апстенку.
Ну то есть вот эти баги в библиотеках есть как данность и они будут вечно. И избавлюсь я конечно от этих изделий рано или поздно, но мне сейчас нужен костыль.
Здравствуйте, grosborn, Вы писали:
G>Пошли первые установки и сразу вижу что программа дает крэши у пользователей. В программе есть анализ интернет-страниц, используется htmlagilitypack и webbrowser и они дают креши и зависончики с переполнениями стэка (пак) в зависимости от загружаемых веб-страниц. Что МС, что опенсорс, бажат. То есть на некоторых страницах. Вроде не часто, будь это в корпоративе, описал бы как багофичу с обещанием исправить в следующих версиях. Но продукт для домашних пользователей. Как это исправить я знаю — выкинуть пак и использовать хромиум или самый дурной вариант вынести все в сервис. Но не хотелось бы сейчас это делать, поскольку нужно сначала вообще определиться пойдет или нет. Чем можно оперативно без лишнего переписывания подавить крэши библиотек?
Так а что конкретно крешится и из-за чего? Вы какую-то дыру нашли в IE webbrower?
AN>Так а что конкретно крешится и из-за чего? Вы какую-то дыру нашли в IE webbrower?
Переписал обращения и крошиться перестало. Портил память. Хотя все может и повториться на каких-то страницах. А сейчас в процессе работы блокирует поток гуи. На каких-то тяжелых страницах когда у него парсер затыкается. И плюс еще умудряется из ком-компонента из отдельного потока влиять на смену фокуса активной формы моего приложения. Это когда странички дают команду на открытие окон или переадресацию. Хотя все работает, но зависает на секунду-другую или сбивает фокус ввода. И вот когда пользователь вводит текст, а в этот момент мне в фоне нужно распарсить страницу и сбросить превью, вот тут и проявляется. Причем довольно редко и на определенных страницах. В общем довольно проблемный компонент. Но тут ничего не поделать, такой он есть. А вот с оверстэками и дедлоками опенсорсных библиотек что-то наверное можно было бы сделать без их правки. И поправить можно было бы но ловить редкие креши это долго и мучительно и никогда не уверен что все выловил. А вот как бы их изолировать, может тулзы есть обкатанные или подходы. Так-то у меня логируется и исключения ловятся, но по факту не всегда спасает.
Здравствуйте, grosborn, Вы писали:
AN>>Так а что конкретно крешится и из-за чего? Вы какую-то дыру нашли в IE webbrower?
G>Переписал обращения и крошиться перестало. Портил память. Хотя все может и повториться на каких-то страницах. А сейчас в процессе работы блокирует поток гуи. На каких-то тяжелых страницах когда у него парсер затыкается. И плюс еще умудряется из ком-компонента из отдельного потока влиять на смену фокуса активной формы моего приложения. Это когда странички дают команду на открытие окон или переадресацию. Хотя все работает, но зависает на секунду-другую или сбивает фокус ввода. И вот когда пользователь вводит текст, а в этот момент мне в фоне нужно распарсить страницу и сбросить превью, вот тут и проявляется. Причем довольно редко и на определенных страницах. В общем довольно проблемный компонент. Но тут ничего не поделать, такой он есть. А вот с оверстэками и дедлоками опенсорсных библиотек что-то наверное можно было бы сделать без их правки. И поправить можно было бы но ловить редкие креши это долго и мучительно и никогда не уверен что все выловил. А вот как бы их изолировать, может тулзы есть обкатанные или подходы. Так-то у меня логируется и исключения ловятся, но по факту не всегда спасает.
мда... не хотел бы я быть покупателем ваших программ...
I>мда... не хотел бы я быть покупателем ваших программ...
Да, и если ты подумал что эти косяки на моей стороне, то тоже ошибаешься. Эти косяки существуют у всех, просто вы, обыкновенные программисты, их как бэ не замечаете. Ну крэшануло раз в месяц, ну подумаешь, 2% потери пакетов это ерунда
Здравствуйте, grosborn, Вы писали:
MP>>Качественными тестами и отладкой. Вcтраиванием отладочных библиотек типа EurekaLog. Обращением в поддержку использованных библиотек.
G>Мимо. Даже коммерческие продукты не исправляют свои баги в достаточной степени, а уж мечтать о техподдержке со стороны МС и не приходится. Вся их техподдержка всегда заключалась в том, что бы объяснить что так оно и будет всегда работать. Хоть убейся апстенку.
Ты в MS писать пробовал? Я два раза писал MS в саппорт о багах, оба раза кончалось патчем и Qxxxxx.
Здравствуйте, grosborn, Вы писали:
AN>>Так а что конкретно крешится и из-за чего? Вы какую-то дыру нашли в IE webbrower?
G>А вот с оверстэками и дедлоками опенсорсных библиотек что-то наверное можно было бы сделать без их правки. И поправить можно было бы но ловить редкие креши это долго и мучительно и никогда не уверен что все выловил. А вот как бы их изолировать, может тулзы есть обкатанные или подходы.
Обкатанный подход — отдельный процесс и таймаут. Делаешь helper process и с ним обмен или через memory mapped file или через IPC, ну или как еще, хоть в файлы пиши. Ты ему HTML, он тебе bitmap или что-то похожее. Когда надо отрендерить, запускаешь тот процесс, и начинаешь ему запросы подавать. 5 секунд он тебе не ответил, ты его убиваешь целиком — TerminateProcess(), и клиенту выдаешь "Render fail". Если тебе надо, чтобы там что-то сложное рендерилось, то обмен делается "ты ему html — он тебе handle окна", нет никакого запрета сделать окно чужого процесса своим child. Существенно, что изоляция нормально работает только на уровне процессов.
MP>>>Качественными тестами и отладкой. Вcтраиванием отладочных библиотек типа EurekaLog. Обращением в поддержку использованных библиотек.
G>>Мимо. Даже коммерческие продукты не исправляют свои баги в достаточной степени, а уж мечтать о техподдержке со стороны МС и не приходится. Вся их техподдержка всегда заключалась в том, что бы объяснить что так оно и будет всегда работать. Хоть убейся апстенку.
S>Ты в MS писать пробовал? Я два раза писал MS в саппорт о багах, оба раза кончалось патчем и Qxxxxx.
Интересный опыт. Я пробовал писать на их форуме поддержки. А куда им там писать что бы они индивидуально вопрос рассмотрели даже не знаю. И не вижу смысла вот в данном конкретном случае, потому что это особенности поведения и менять ничего, я уверен, не будут. Не те баги. Да и не нужен мне патч, в планах переход на другие компоненты.
S>Обкатанный подход — отдельный процесс и таймаут. Делаешь helper process и с ним обмен или через memory mapped file или через IPC, ну или как еще, хоть в файлы пиши. Ты ему HTML, он тебе bitmap или что-то похожее. Когда надо отрендерить, запускаешь тот процесс, и начинаешь ему запросы подавать. 5 секунд он тебе не ответил, ты его убиваешь целиком — TerminateProcess(), и клиенту выдаешь "Render fail". Если тебе надо, чтобы там что-то сложное рендерилось, то обмен делается "ты ему html — он тебе handle окна", нет никакого запрета сделать окно чужого процесса своим child. Существенно, что изоляция нормально работает только на уровне процессов.
Видимо не увильнуть мне от дополнительной работы, придется делать. Спасибо.
Здравствуйте, grosborn, Вы писали:
I>>мда... не хотел бы я быть покупателем ваших программ...
G>Да, и если ты подумал что эти косяки на моей стороне, то тоже ошибаешься. Эти косяки существуют у всех, просто вы, обыкновенные программисты, их как бэ не замечаете. Ну крэшануло раз в месяц, ну подумаешь, 2% потери пакетов это ерунда
А у "Необыкновенных" программистов виноват во всем webbrowser, опенсорс и MS?