Форум » [x]Harbour » Вылет программы по DOS Error 38 ? » Ответить

Вылет программы по DOS Error 38 ?

Andrey: Всем привет. На новом компе постоянно падает прога ! Помогите пожалуйста разобраться ? Система: [pre2]Operating system...: Windows 10 10.0 MiniGUI version....: Harbour MiniGUI Extended Edition 19.04 (32-bit) Harbour version....: Harbour 3.2.0dev (r1904111533) Harbour built on...: Apr 11 2019 19:43:19 C/C++ compiler.....: Borland C++ 5.5.1 (32-bit) Multi Threading....: YES VM Optimization....: YES[/pre2] Лог ошибок в ErrorLog.htm[pre2] Date: 05.06.19 Time: 17:31:57 Application: C:\ABONENT\Abonent2win.exe [Версия 4.79.0603] Time from start: 0 days 7 hours 29 mins 39 secs Error DBFCDX/1010 Ошибка чтения: \\SERVER\ABONENT\COMMON\NETOPER.DBF (DOS Error 38) --------------------------------- Stack Trace --------------------------------- Called from DBSKIP(0) Called from OPERATUSERS2(292) in module: Source\main_wdbf.prg Called from (b)MAIN(270) in module: Source\main.prg Called from _DOCONTROLEVENTPROCEDURE(1865) in module: h_windows.prg Called from EVENTS(1583) in module: h_events.prg Called from MYEVENTSHANDLER(1233) in module: Source\main.prg Called from DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1499) in module: h_windows.prg Called from MAIN(287) in module: Source\main.prg Date: 05.06.2019 Time: 18:08:46 Application: C:\ABONENT\Abonent2win.exe [Версия 4.79.0603] Time from start: 0 days 0 hours 36 mins 28 secs Error DBFCDX/1010 Ошибка чтения: \\SERVER\ABONENT\COMMON\NETOPER.DBF (DOS Error 38) --------------------------------- Stack Trace --------------------------------- Called from DBSKIP(0) Called from OPERATUSERS2(292) in module: Source\main_wdbf.prg Called from (b)MAIN(270) in module: Source\main.prg Called from _DOCONTROLEVENTPROCEDURE(1865) in module: h_windows.prg Called from EVENTS(1583) in module: h_events.prg Called from MYEVENTSHANDLER(1233) in module: Source\main.prg Called from DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1499) in module: h_windows.prg Called from MAIN(287) in module: Source\main.prg Date: 05.06.2019 Time: 18:08:59 Application: C:\ABONENT\Abonent2win.exe [Версия 4.79.0603] Time from start: 0 days 0 hours 36 mins 41 secs Error DBFCDX/1010 Ошибка чтения: \\SERVER\ABONENT\COMMON\NETOPER.DBF (DOS Error 38) --------------------------------- Stack Trace --------------------------------- Called from DBSKIP(0) Called from DBFLOG2EXIT(185) in module: Source\main_wdbf.prg Called from MYEXITERROR(882) in module: Source\main.prg Called from SHOWERROR(200) in module: Source\ErrorSys.prg Called from DEFERROR(139) in module: Source\ErrorSys.prg Called from (b)ERRORSYS(65) in module: Source\ErrorSys.prg Called from DBSKIP(0) Called from OPERATUSERS2(292) in module: Source\main_wdbf.prg Called from (b)MAIN(270) in module: Source\main.prg Called from _DOCONTROLEVENTPROCEDURE(1865) in module: h_windows.prg Called from EVENTS(1583) in module: h_events.prg Called from MYEVENTSHANDLER(1233) in module: Source\main.prg Called from DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1499) in module: h_windows.prg Called from MAIN(287) in module: Source\main.prg [/pre2]

Ответов - 16

Dima: спроси гугл [url=https://groups.google.com/forum/#!topic/comp.lang.xharbour/zU7EmbJ2Vks]может это поможет[/url]

alkresin: еще вот тут есть: https://www.wiki-errors.com/err.php?wiki=38 Если вкратце, то это, скорее всего, связано с повреждением некоторых системных файлов и надо восстановить систему.

Andrey: Dima пишет: спроси гугл Да искал, попадались другие ссылки. Спасибо БОЛЬШОЕ всем !


Andrey: alkresin пишет: еще вот тут есть: https://www.wiki-errors.com/err.php?wiki=38 Что то не то там пишут.... Предлагают какую то левую утилиту за $29.95 USD У юзера на том компе Win-10 (последня версия), а утилиту предлагают для Win7 ! Убьёт всю систему у моего юзера... 38 ошибка это - NetBIOS command limit exceeded Нашёл про это тут - http://stanislavs.org/helppc/dos_error_codes.html Если смотреть хелпер по xHarbour, то там DosError() 38 ошибка - Unable to complete the operation Какую ошибку выбрать ? Нашёл похожую ошибку - https://translate.google.ru/translate?sl=auto&tl=ru&u=http%3A%2F%2Fforums.fivetechsupport.com%2Fviewtopic.php%3Ff%3D6%26t%3D32829 Но ссылка на https://support.microsoft.com/en-us/kb/74463 - не работает. Почитать и понять негде. У меня много юзеров используют программу, но данная ошибка возникает только у ОДНОГО юзера. Вот код программы:[pre2] SELECT NETOPER GOTO TOP DO WHILE !EOF() .... SKIP // строка 292 ENDDO[/pre2] или [pre2] SELECT NETOPER GOTO TOP DO WHILE !EOF() IF NETOPER->KOPERAT == nOper IF RLock() ....... DBUnlock() ENDIF ENDIF SKIP // строка 185 ENDDO[/pre2] Ошибка возникает если долго НЕ РАБОТАТЬ на компе... Т.е. наверное включается спящий режим, а восстановиться потом не получается, комп оживает уже без программы.

PSP: Andrey пишет: 38 ошибка это - NetBIOS command limit exceeded Это - 16-ричной системе. В 10-тичной - 56 https://www.computerhope.com/xdoseror.htm Andrey пишет: Ошибка возникает если долго НЕ РАБОТАТЬ на компе... Попробуй вместо \\SERVER написать \\ip-адрес.

Pasha: Это часом не ERROR_HANDLE_EOF ? Получаем: genCode = 23 (EG_READ) osCode = 38 (ERROR_HANDLE_EOF) ошибка возникает при чтении dbf или cdx Асинхронная операция чтения может встретиться с концом файла в течение инициализации вызова ReadFile, или в ходе последующей асинхронной операции. Если EOF обнаруживается функцией ReadFile во время асинхронной операции чтения, ReadFile возвращает значение ЛОЖЬ (FALSE), а GetLastError возвращает ошибку ERROR_HANDLE_EOF. Если EOF обнаруживается в ходе последующей асинхронной операции, происходит вызов функции GetOverlappedResult, чтобы получить в результате этой операции возвращенное значение ЛОЖЬ (FALSE), а GetLastError возвратит ошибку ERROR_HANDLE_EOF. harbour как раз использует асинхронную ReadFile

Pasha: Вот как раз обсуждение нашей ситуации: https://forum.sources.ru/index.php?showtopic=409663 там есть такие пугающие фразы то есть эти люди с майкрософта поменяли поведение базовой функции. так мало того что поменяли так они сделали это ещё с ошибкой, GetOverlappedResult иногда возвращает ERROR_HANDLE_EOF хотя файл читается с начала и до конца ещё далеко. и как бороться с творением уникальных и замечательных людей из ms советов нет.

alkresin: Andrey пишет: Что то не то там пишут.... Предлагают какую то левую утилиту за $29.95 USD Дело не в том, какую утилиту они продают, а в том, что проблема связана с системными файлами Windows и устраняется восстановлением этих файлов - а способы восстановления есть разные. Я давно ничем подобным не занимался, но смутно помню, что можно было запустить переустановку ОС с опцией "восстановление" - при этом все установленные программы и данные сохранялись. Как крайний случай можно полностью переставить Windows.

Pasha: Это не та ошибка ERROR_TOO_MANY_CMDS, код 0x38, или 56 У Андрея код 38, то есть ERROR_HANDLE_EOF Может стоит накатить все обновления на win10, в надежде на то, что уникальные уже все тихо пофиксили ? Хотя система вроде сама обновляется, не спрашивая разрешения.

Andrey: Pasha пишет: Вот как раз обсуждение нашей ситуации: Да почитал... не всё оказалась так просто. GetOverlappedResul иногда возвращает явно 38 код ошибки хотя конца файла ещё не достиг. Пока не понял почему так происходит. Обрабатывать код ошибка в __IOCompletionRoutine тоже как-то не понятно. в Win7 для последнего блока она не вызывается. Вопщем пока склоняюсь к тому чтобы проверять код ошибки в двух местах при вызове и ReadFileEx и внутри __IOCompletionRoutine и отказаться от GetOverlappedResult. хотя в MSDN написано If ReadFileEx attempts to read past the end-of-file (EOF), the call to GetOverlappedResult for that operation returns FALSE and GetLastError returns ERROR_HANDLE_EOF. И как это в Harbour'е нужно делать ? Нужно писать разработчикам Харбора... Сомневаюсь что они под 10-ку будут делать эти изменения... А насчёт переустановки Винды - это тоже решение, но не факт что сработает. Кстати прога начала валиться совсем недавно, раньше работало без ошибок. Что-то поменяли и обновили в Винде...

Pasha: Конечно это жесть жестяная. Иногда самая что-ни на есть стандартная функция ReadFile возвращает ошибку на конец файла, когда конца файла нет и в принципе быть не может.

Andrey: Вообще то может я неправильно делаю сам ? На главной форме включён таймер. Каждые 2 минуты запускает функцию чтение базы кто в программе. При работе компа всё отлично, но если комп уходит в спящий режим (может диск отключается), то прога может тогда вылетает ? Тогда возникает вопрос, как определить (функция) находиться ли комп в спящем режиме ?

PSP: Обычно в спящем режиме сетевой интерфейс отключается.

Dima: Andrey пишет: Тогда возникает вопрос, как определить (функция) находиться ли комп в спящем режиме ? https://ru.stackoverflow.com/questions/6885/%D0%9A%D0%B0%D0%BA-%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D1%8C-%D1%81%D0%BF%D1%8F%D1%89%D0%B8%D0%B9-%D1%80%D0%B5%D0%B6%D0%B8%D0%BC

SergKis: Andrey У меня над сервером LetoDb 1.0 работает менеджер AutoIt3, который следит за наличием оного в памяти и ловли сообщений от tray menu [pre2]While 1 $msg = TrayGetMsg() Select Case $msg = 0 ContinueLoop Case $msg = $start_item RunServer() Start_Click() Case $msg = $stop_item StopServer() Stop_Click() Case $msg = $exit_item StopServer() ExitLoop Case $msg = $WM_QUERYENDSESSION StopServer() ExitLoop Case $msg = $WM_ENDSESSION StopServer() ExitLoop EndSelect WEnd [/pre2] выделенных сообщений хватало для работы и засыпания\просыпания pc

Andrey: Да я думаю что наверное нужно не ловить спящий режим, а отлавливать доступность базы по сетевому пути. Вроде это правильнее будет. А то получается за всё время работы программы не у одного юзера не было такой ситуации, когда сервер уходил в спящий режим.



полная версия страницы