logo
logo

Форум Сервис: настройки программы

создать новую тему раскрыть все
Сервис: настройки программы $pLinTEr 16/01/2004 18:12 #написать ответ
Вызов данного меню приводит к фатальной ошибке:

Программа ABILITYCASH вызвала сбой при обращении к странице памяти
в модуле KERNEL32.DLL по адресу 0167:bff7f19d.
Регистры:
EAX=0000004d CS=0167 EIP=bff7f19d EFLGS=00010206
EBX=81b10404 SS=016f ESP=0069ee58 EBP=0069ee84
ECX=0000000c DS=016f ESI=00000254 FS=6c6f
EDX=81b11062 ES=016f EDI=0069eff5 GS=0000
Байты по адресу CS:EIP:
66 89 06 83 c6 02 49 75 ec e9 f4 01 00 00 85 c9
Содержимое стека:
00000001 00000140 00000104 575c3a43 00000000 02705357 00690000 81b11062 81b10404 0000000c 0069f000 0069eea4 0040eeb4 000004e3 00000000 0069eff4

 
Dervish: Вот ведь...
 
Ситуация ясна, буду искать и исправлять. Спасибо.
 
А какая у вас операционная система установлена?
RE $pLinTEr 16/01/2004 23:25 #написать ответ
Windows 98 SE
 
Dervish: Да, я уже посмотрел по логам web-сервера...
 
Резюме:
 
Я примерно понял, что это за ошибка. Сейчас я лихорадочно устанавливаю Windows`98, для того, чтобы точно найти место ошибки. Вообще, имхо, одно дело - нелогичное поведение программы и/или некоторые просчёты юзабилити, с этим ещё можно некоторое время мириться. А вот с ситуацией, когда программа просто валится мириться просто нельзя. Поэтому я постараюсь как можно быстрее исправить эту ошибку и тут же выложить на сайт обновление. Надеюсь, мне получится сделать это сегодня.
Приятно когда реагируют так быстро :) $pLinTEr 17/01/2004 00:01 #написать ответ
Я со своей стороны постараюсь помочь.
 
Причем окна "программного" что ошибка появилась нету.
 
Видимо гдето что-то не создалось... а меню пытается вызвать это что-то, наверно форму, которая по какойлибо причине не создалась в памяти.
 
Dervish: Нет, там стек где-то переполняется, в итоге возврат происходит в никуда.
 
Сейчас найдём, никуда она не денется...
 
А вот ещё заметил: эта ошибка проявляется только тогда, когда что-то записано в папке Startup. Посмотрите, если в ней есть линк на программу, вполне возможно, она валится из-за него и если вы его уберёте, она может заработать.
Написана на Microsoft Developer Studio Visual C++? $pLinTEr 17/01/2004 00:08 #написать ответ
Скомпили в Debug режиме, с Debug Info. Я отладчиком от Developer Studio найду где ошибка вылазит.
 
Dervish: По адресу из дампа я уже нашёл.
Ура я попал в настройки! $pLinTEr 17/01/2004 00:36 #написать ответ
Линка на программу небыло. Я удалил папку "Автозагрузка", и форма настроек тутже появилась!
 
Dervish: Значит, дело действительно в автозагрузке.
И ещё... $pLinTEr 17/01/2004 00:39 #написать ответ
Если форму закрыть и вернуть папку на место, опять такая же ошибка.
 
Dervish: А у меня, увы, эта ошибка что-то пропала. Я её увидел пару раз, теперь не получается повторить. Не подскажете, что именно у вас находится в автозагрузке?
..... $pLinTEr 17/01/2004 00:52 #написать ответ
Нашел причину (??)
 
Удалял по одному файлу из папки "C:WINDOWSГлавное менюПрограммыАвтозагрузка"
 
Ошибка исчезла когда в папке остался один файл, причем неважно какой.
 
Я думаю проверка на наличие "AbilityCash.lnk" дает сбой
 
Может мало памяти под строчку?
 
Dervish: Нашёл причину. Причина ошибки в неправильном параметре вызова одной функции. Ошибка проявляется не тогда, когда в папке "Автозагрузка" есть AbilityCash.lnk, ситуация немного другая.
 
Программа не ориентируется по имени линка в автозагрузке. Вместо этого она сканирует все линки подряд. Если первым попался линк на программу, то всё в порядке, сбоя не будет. А как только попадается другой файл, то тогда программа падает.
 
Исправить ошибку можно и довольно легко. Но есть сомнения, а правильно ли вообще такое поведение? Сегодня я получил на e-mail описание ситуации, когда Windows при вызове настроек программы выдаёт сообщение, что "Windows ищет, на кого же ссылается вот такой-то линк..." Мммда, не очень хорошая ситуация.
А не проще ли... $pLinTEr 17/01/2004 01:25 #написать ответ
...сделать запись в реестре?
 
Dervish: Проще безусловно. Но я подходил с точки зрения удобства пользователя: ведь линк можно поправить ручками, для этого необязательно лезть в реестр. И требования к квалификации пользователя гораздо ниже для работы с папкой "Автозагрузка", чем с реестром.
 
Ладно, я пока нашёл и исправил ошибку в минимальном варианте, не изменяя функциональности программы. Вы не поверите, для этого надо было всего навсего удалить один единственный символ в тексте программы! Но перед этим пришлось поставить Windows`98
Ошибка исправлена Dervish 17/01/2004 02:02 #написать ответ
А новый файл выложен на сайт.
Спасибо $pLinTEr 17/01/2004 08:40 #написать ответ
Скачал, работает.
 
Dervish: Вам спасибо за то, что указали на ошибку.
реестр лучше вообще не использовать для повышения мобильности программы (-) dodo 01/05/2005 13:37 #написать ответ
.