Ошибка в mshtml

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Ошибка в mshtml

Сообщение Antonariy » 01.06.2006 (Чт) 12:35

Проблема такая: загружаю документ и отлавливаю в нем события. Иногда при обработке клика vb или сама прога падает с недопустимой в приличном обществе ошибкой, отловить которую не получается. Вот как она выглядит в event viewer:
Ошибка приложения vb6.exe, версия 6.0.97.82, модуль mshtml.dll, версия 6.0.2900.2769, адрес 0x000fa4d1.
или
Ошибка приложения vbaclient.exe, версия 1.0.0.184, модуль mshtml.dll, версия 6.0.2900.2769, адрес 0x000fa4d1.
Просмотрел все сообщения, почти всегда глюк по адресу 0x000fa4d1, дважды попался 0x00068356. Как можно выяснить, что за неблагоприятное стечение обстоятельств заставляет грохаться mshtml?

PS. Однажды отправил такую ошибку в дебаг 2005й студии. Она вывела многкилометровый листинг ассемблерных инструкций, я перетащил исполнение на следующую инструкцию после ошибочной и выполнение продолжилось как ни в чем ни бывало.
Лучший способ понять что-то самому — объяснить это другому.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 01.06.2006 (Чт) 14:07

http://www.eworldui.net/forums/PrintPost.aspx?PostID=3550

ничего утешительного :?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 01.06.2006 (Чт) 14:16

Эхх, надеюсь со следующим ie mshtml подштопают.
Лучший способ понять что-то самому — объяснить это другому.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 01.06.2006 (Чт) 19:10

Отцы. Да вы чего. Помоему всё отлично в ней пашет :shock: :shock:

Я какие только события не ловил ! Всё норм там ! :shock:

2 Antonariy: Постучи мне в асю, если время будет. Мож чем помочь смогу. :wink:

Вот пример
Вложения
WB.rar
(1.6 Кб) Скачиваний: 32
Последний раз редактировалось ALX_2002 02.06.2006 (Пт) 19:40, всего редактировалось 2 раз(а).

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 02.06.2006 (Пт) 9:39

И чем мне может помочь программа для мобильников Motorola? Или в чем смысл примера? Да еще с ошибкой.
WB.LocationURL = ""

WB.LocationURL - read only.
Лучший способ понять что-то самому — объяснить это другому.

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 02.06.2006 (Пт) 11:37

Antonariy
Ну раз выполнение продолжается как ни в чем ни бывало, поставь свой Error Handler с EXCEPTION_CONTINUE_EXECUTION :roll:
Если всё делать своими ручками, они скоро отвалятся !

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 02.06.2006 (Пт) 12:49

Kovu писал(а):Antonariy
Ну раз выполнение продолжается как ни в чем ни бывало, поставь свой Error Handler с EXCEPTION_CONTINUE_EXECUTION :roll:
Это что значит?
Лучший способ понять что-то самому — объяснить это другому.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 02.06.2006 (Пт) 17:22

Соррии - не тот пример залил !!! :oops: :oops:

Сейчас снова перезалью....

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 02.06.2006 (Пт) 18:40

Antonariy писал(а): Это что значит?

Ну использовать SetUnhandledExceptionFilter. А в процедуре обработки исключения возвращать EXCEPTION_CONTINUE_EXECUTION , т.е. продолжение выполнения. :)
Если всё делать своими ручками, они скоро отвалятся !

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 03.06.2006 (Сб) 14:25

ALX_2002
Опять не то залил? :?

Kovu
Ты не это ли имеешь ввиду?
http://bbs.vbstreets.ru/viewtopic.php?t ... 13ec4e9433
Как это работает?
Лучший способ понять что-то самому — объяснить это другому.

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 03.06.2006 (Сб) 17:33

Antonariy
Именно это. Держи пример. strLib -название той библиотеки, ошибку в которой игнорировать надо. lngLibSize -размер библиотеки :)
Вложения
5345345.rar
(2.2 Кб) Скачиваний: 25
Если всё делать своими ручками, они скоро отвалятся !

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 03.06.2006 (Сб) 21:18

Не. Ща всё то залил. Отлов событий в документе. :shock:

Вроде всё то ????

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 04.06.2006 (Вс) 11:11

Kovu
Поиск как всегда рулит :wink:
ALX_2002
В нем нет для меня ничего нового.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 05.06.2006 (Пн) 11:29

lngLibSize -размер библиотеки
Размер файла библиотеки? Если так, то у меня размер kernel32.dll 989696, а не 983552 как у тебя.
Еще у меня XP Sp2.
Лучший способ понять что-то самому — объяснить это другому.

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 05.06.2006 (Пн) 12:47

Antonariy писал(а):
lngLibSize -размер библиотеки
Размер файла библиотеки? Если так, то у меня размер kernel32.dll 989696, а не 983552 как у тебя.
Еще у меня XP Sp2.

У меня тоже Сп2, но размер такой. Ну тогда измеряй размер файла библиотеки перед установкой процедуры обработки ошибок. Хотя у тебя же вроде фиксированный размер mshtml.dll (если ты её за собой таскаешь) :)
Если всё делать своими ручками, они скоро отвалятся !

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 05.06.2006 (Пн) 13:26

С определением размера справлюсь, спс :wink:
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 05.06.2006 (Пн) 16:07

Не получается. Процедуру фильтра изменил следующим образом:
Код: Выделить всё
Public Const strLib As String = "mshtml.dll"

Public Function ExceptionFilter(ByRef ExceptionPtrs As EXCEPTION_POINTERS) As Long
Dim Rec As EXCEPTION_RECORD
Dim strException As String
Dim hMem As Long
Dim lngLibSize As Long
Dim s As String
    s = Space(100)
    GetSystemDirectory s, 100
    s = Trim(Replace(s, Chr(0), "\"))
    lngLibSize = FileLen(s & strLib)
    Rec = ExceptionPtrs.pExceptionRecord
    Do Until Rec.pExceptionRecord = 0
        CopyExceptionRecord Rec, Rec.pExceptionRecord, Len(Rec)
    Loop
    hMem = GetModuleHandle(strLib)
    If Rec.ExceptionAddress > hMem And Rec.ExceptionAddress < hMem + lngLibSize Then
        Select Case MsgBox("Error in " & strLib & "!", vbCritical + vbAbortRetryIgnore)
            Case vbAbort: ExceptionFilter = EXCEPTION_EXECUTE_HANDLER
            Case vbRetry: ExceptionFilter = EXCEPTION_CONTINUE_SEARCH
            Case vbIgnore: ExceptionFilter = EXCEPTION_CONTINUE_EXECUTION
        End Select
    Else
        ExceptionFilter = EXCEPTION_EXECUTE_HANDLER
    End If
End Function

По vbAbort вылетает со свистом, по vbRetry совершает недопустимую операцию и вылетает с отчетом, по vbIgnore раз за разом появляется этот msgbox.

Не поленился еще раз отправить эту ошибку в дебаг 2005й, скриншот асма, сделанный при перетаскивании стрелки исполнения, прилагается. Перетащил, продолжил исполнение, прога не упала. Может, в этой процедуре можно еще какие нибудь телодвижения сделать, помимо вывода сообщения?
Вложения
sc.rar
(55.35 Кб) Скачиваний: 17
Лучший способ понять что-то самому — объяснить это другому.

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 05.06.2006 (Пн) 18:39

Эм, месаджбокс вообще был для примера что эта процедура срабатывает :) По идее когда игноришь программа продолжать выполняться как ни в чем не бывало должна, по крайней мере с fmod.dll так было :roll:
Если всё делать своими ручками, они скоро отвалятся !

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 21.06.2006 (Ср) 16:51

Создал пример 100%но гарантирующий эту ошибку. Для работы примера желательно создать dsn с базой nwind.mdb, входящей в стандартную поставку офиса.

Запустить пример, нажать Command1, в окне броузера жать по кнопкам Удалить до появления ошибки.
Вложения
test.rar
(6.63 Кб) Скачиваний: 22
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 30.06.2006 (Пт) 9:27

Нашлось-таки лекарство :D WindowsXP-KB916281-x86-RUS.exe
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.06.2006 (Пт) 11:04

А у меня прога падает с ошибкой в mshtml по адресу 7b6f0.
Версия модуля -- 6.0.2900.2912
Это тот же баг, или другой?
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 30.06.2006 (Пт) 11:26

Видимо другой. Мой в версии 2912 не воспроизводится.
Пробовал свой пропустить через SetUnhandledExceptionFilter?
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.06.2006 (Пт) 11:38

Я эту ошибку сам поймать тоже не могу :-(
Но много кто говорит, что она там есть.

У меня у самого стоит 2604, и вообще ни разу не было, чтобы с ошибкой в нём что-то падало...
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 30.06.2006 (Пт) 11:43

2604? Откуда такой раритет? 2769 уже встроена в XP SP2.
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.06.2006 (Пт) 11:46

Наверное, из SP1; не помню, откуда.
Может, прога какая-то кривая поставила.
А что? это очень плохо, что она старая?
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 30.06.2006 (Пт) 11:56

В моем случае оказалось, что плохо :) В новой ошибку вроде как устранили. По крайней мере я не смог ее воспроизвести на своем примере test.

Кстати:
А у меня прога падает с ошибкой в mshtml по адресу 7b6f0.
Версия модуля -- 6.0.2900.2912
У меня у самого стоит 2604
Какая все-таки стоит? И ошибка возникает регулярно или очень редко?
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.06.2006 (Пт) 12:13

tyomitch писал(а):Я эту ошибку сам поймать тоже не могу :-(
Но много кто говорит, что она там есть.

У меня у самого стоит 2604, и вообще ни разу не было, чтобы с ошибкой в нём что-то падало...

У "много кого" возникает регулярно.
У меня не возникает вообще.
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 36

    TopList