Автор | Сообщение |
|
| постоянный участник
|
Пост N: 6303
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.06.19 18:33. Заголовок: Вылет программы по DOS Error 38 ?
Всем привет. На новом компе постоянно падает прога ! Помогите пожалуйста разобраться ? Система: 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 Лог ошибок в ErrorLog.htm 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
|
|
|
Ответов - 16
[только новые]
|
|
|
| |
Пост N: 7051
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.06.19 20:49. Заголовок: спроси гугл :sm54: ..
спроси гугл [url=https://groups.google.com/forum/#!topic/comp.lang.xharbour/zU7EmbJ2Vks]может это поможет[/url]
|
|
|
|
| moderator
|
Пост N: 1291
Зарегистрирован: 06.07.06
|
|
Отправлено: 20.06.19 21:06. Заголовок: еще вот тут есть: ht..
|
|
|
|
| постоянный участник
|
Пост N: 6305
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.06.19 21:54. Заголовок: Dima пишет: спроси ..
Dima пишет: Да искал, попадались другие ссылки. Спасибо БОЛЬШОЕ всем !
|
|
|
|
| постоянный участник
|
Пост N: 6306
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.06.19 22:20. Заголовок: alkresin пишет: еще..
alkresin пишет: Что то не то там пишут.... Предлагают какую то левую утилиту за $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 - не работает. Почитать и понять негде. У меня много юзеров используют программу, но данная ошибка возникает только у ОДНОГО юзера. Вот код программы: SELECT NETOPER GOTO TOP DO WHILE !EOF() .... SKIP // строка 292 ENDDO или SELECT NETOPER GOTO TOP DO WHILE !EOF() IF NETOPER->KOPERAT == nOper IF RLock() ....... DBUnlock() ENDIF ENDIF SKIP // строка 185 ENDDO Ошибка возникает если долго НЕ РАБОТАТЬ на компе... Т.е. наверное включается спящий режим, а восстановиться потом не получается, комп оживает уже без программы.
|
|
|
|
| постоянный участник
|
Пост N: 1531
Зарегистрирован: 27.01.07
|
|
Отправлено: 21.06.19 06:59. Заголовок: Andrey пишет: 38 ош..
Andrey пишет: цитата: | 38 ошибка это - NetBIOS command limit exceeded |
| Это - 16-ричной системе. В 10-тичной - 56 https://www.computerhope.com/xdoseror.htm Andrey пишет: цитата: | Ошибка возникает если долго НЕ РАБОТАТЬ на компе... |
| Попробуй вместо \\SERVER написать \\ip-адрес.
|
|
|
|
| Администратор
|
Пост N: 3844
Зарегистрирован: 23.05.05
|
|
Отправлено: 21.06.19 08:06. Заголовок: Это часом не ERROR_H..
Это часом не 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
|
|
|
|
| Администратор
|
Пост N: 3845
Зарегистрирован: 23.05.05
|
|
Отправлено: 21.06.19 08:39. Заголовок: Кот как раз обсужден..
Вот как раз обсуждение нашей ситуации: https://forum.sources.ru/index.php?showtopic=409663 там есть такие пугающие фразы цитата: | то есть эти люди с майкрософта поменяли поведение базовой функции. так мало того что поменяли так они сделали это ещё с ошибкой, GetOverlappedResult иногда возвращает ERROR_HANDLE_EOF хотя файл читается с начала и до конца ещё далеко. |
| и как бороться с творением уникальных и замечательных людей из ms советов нет.
|
|
|
|
| moderator
|
Пост N: 1292
Зарегистрирован: 06.07.06
|
|
Отправлено: 21.06.19 09:47. Заголовок: Andrey пишет: Что т..
Andrey пишет: цитата: | Что то не то там пишут.... Предлагают какую то левую утилиту за $29.95 USD |
| Дело не в том, какую утилиту они продают, а в том, что проблема связана с системными файлами Windows и устраняется восстановлением этих файлов - а способы восстановления есть разные. Я давно ничем подобным не занимался, но смутно помню, что можно было запустить переустановку ОС с опцией "восстановление" - при этом все установленные программы и данные сохранялись. Как крайний случай можно полностью переставить Windows.
|
|
|
|
| Администратор
|
Пост N: 3846
Зарегистрирован: 23.05.05
|
|
Отправлено: 21.06.19 10:08. Заголовок: Это не та ошибка ER..
Это не та ошибка ERROR_TOO_MANY_CMDS, код 0x38, или 56 У Андрея код 38, то есть ERROR_HANDLE_EOF Может стоит накатить все обновления на win10, в надежде на то, что уникальные уже все тихо пофиксили ? Хотя система вроде сама обновляется, не спрашивая разрешения.
|
|
|
|
| постоянный участник
|
Пост N: 6307
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.19 13:32. Заголовок: Pasha пишет: Вот ка..
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-ку будут делать эти изменения... А насчёт переустановки Винды - это тоже решение, но не факт что сработает. Кстати прога начала валиться совсем недавно, раньше работало без ошибок. Что-то поменяли и обновили в Винде...
|
|
|
|
| Администратор
|
Пост N: 3847
Зарегистрирован: 23.05.05
|
|
Отправлено: 21.06.19 14:27. Заголовок: Конечно это жесть же..
Конечно это жесть жестяная. Иногда самая что-ни на есть стандартная функция ReadFile возвращает ошибку на конец файла, когда конца файла нет и в принципе быть не может.
|
|
|
|
|
| постоянный участник
|
Пост N: 6308
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.19 15:42. Заголовок: Вообще то может я не..
Вообще то может я неправильно делаю сам ? На главной форме включён таймер. Каждые 2 минуты запускает функцию чтение базы кто в программе. При работе компа всё отлично, но если комп уходит в спящий режим (может диск отключается), то прога может тогда вылетает ? Тогда возникает вопрос, как определить (функция) находиться ли комп в спящем режиме ?
|
|
|
|
| постоянный участник
|
Пост N: 1532
Зарегистрирован: 27.01.07
|
|
Отправлено: 21.06.19 15:53. Заголовок: Обычно в спящем режи..
Обычно в спящем режиме сетевой интерфейс отключается.
|
|
|
|
| |
Пост N: 7052
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.06.19 15:57. Заголовок: Andrey пишет: Тогда..
|
|
|
|
| постоянный участник
|
Пост N: 2592
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.06.19 16:41. Заголовок: Andrey У меня над с..
Andrey У меня над сервером LetoDb 1.0 работает менеджер AutoIt3, который следит за наличием оного в памяти и ловли сообщений от tray menu Скрытый текст
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
| выделенных сообщений хватало для работы и засыпания\просыпания pc
|
|
|
|
| постоянный участник
|
Пост N: 6310
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.19 17:30. Заголовок: Да я думаю что навер..
Да я думаю что наверное нужно не ловить спящий режим, а отлавливать доступность базы по сетевому пути. Вроде это правильнее будет. А то получается за всё время работы программы не у одного юзера не было такой ситуации, когда сервер уходил в спящий режим.
|
|
|
|