(аналогичный вопрос был задан мной ранее - этот вопрос относится к той же заявке, но к другой - но, вероятно, связанной - проблеме)
У меня есть приложение, которое регулярно записывает записи в файл данных. Файл открывается, обновляется и закрывается каждый раз. Этот же экземпляр приложения также читает из файла.
В других местах сети есть несколько "ведомых" экземпляров одного и того же приложения, которые выполняют чтение только из одного и того же файла данных в сети.
Иногда (иногда дни, а иногда и недели) происходит сбой доступа к файлу с ошибкой отказа в доступе на всех машинах и в одно и то же время, за исключением того, что иногда происходит сбой на всех машинах, кроме одного из ведомых. Файл не может быть записан или прочитан. Обычно все ПК, кроме одного, выходят из строя одним и тем же способом - код ошибки 5 "доступ запрещен" - но иногда один из подчиненных все еще может продолжать доступ к файлу.
Проверка системы с помощью утилит, которые сообщают, у кого открыт файл (LockHunter
, утилита SysInternal's Handle
), мало что говорит нам - на ПК, который пишет в файл, они обнаруживают, что System
процесс имеет дескриптор, предположительно потому, что приложение, которое имеет файл open открыл его через сетевой ресурс, ведомый, который все еще может записывать в файл, показывает дескриптор как разблокированный, а с другими ведомыми устройствами ни одна утилита не сообщает ничего.
Когда мы устраняли неполадки в системе, мы использовали NotePad
чтобы быстро проверить, разблокирован ли файл. Блокнот всегда сообщает, что не может открыть файл, потому что файл открыт в другом приложении - за исключением одного из подчиненных компьютеров, и не всегда одного и того же. Когда мы открываем файл с помощью NotePad
на этом ПК, он открывается без жалоб, и в то же время файл разблокируется - все остальные ПК могут читать и записывать в файл с этого момента (хотя с этого момента все работает нормально) Я не уверен, что файловая система не была повреждена каким-либо образом).
Ниже приведен журнал, полученный ProcMon
от операций подчиненной файловой системы за период, когда Notepad
используется для "открепления" файла. Файл APP.ZZZ
читается каждую секунду, что соответствует каждой группе из 5 обращений из App.exe
... accesses from the remote machine
1:08:59.5706074 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:08:59.7993871 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:08:59.8081861 p.m. App.exe 6276 CreateFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: None, AllocationSize: n/a, OpenResult: Opened"
1:08:59.8083675 p.m. App.exe 6276 QueryBasicInformationFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "CreationTime: 17/11/2014 5:46:01 p.m., LastAccessTime: 23/09/2015 4:00:01 a.m., LastWriteTime: 23/09/2015 11:53:21 a.m., ChangeTime: 23/09/2015 11:53:21 a.m., FileAttributes: ANCI"
1:08:59.8083874 p.m. App.exe 6276 CloseFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS
1:09:00.5663175 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:09:00.7611667 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:09:00.7669819 p.m. App.exe 6276 CreateFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: None, AllocationSize: n/a, OpenResult: Opened"
1:09:00.7671534 p.m. App.exe 6276 QueryBasicInformationFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "CreationTime: 17/11/2014 5:46:01 p.m., LastAccessTime: 23/09/2015 4:00:01 a.m., LastWriteTime: 23/09/2015 11:53:21 a.m., ChangeTime: 23/09/2015 11:53:21 a.m., FileAttributes: ANCI"
1:09:00.7671720 p.m. App.exe 6276 CloseFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS
1:09:01.5654203 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
... NOTEPAD starts and opens the file
1:09:01.7112007 p.m. NOTEPAD.EXE 4508 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:09:01.7187932 p.m. NOTEPAD.EXE 4508 CreateFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened"
1:09:01.7233678 p.m. NOTEPAD.EXE 4508 QueryInformationVolume \\REMOTE\App\Datafiles\APP.ZZZ BUFFER OVERFLOW "VolumeCreationTime: 13/02/2014 11:58:47 a.m., VolumeSerialNumber: 6060-4BB9, SupportsObjects: True, VolumeLabel: Win?"
1:09:01.7248358 p.m. NOTEPAD.EXE 4508 QueryAllInformationFile \\REMOTE\App\Datafiles\APP.ZZZ BUFFER OVERFLOW "CreationTime: 17/11/2014 5:46:01 p.m., LastAccessTime: 23/09/2015 4:00:01 a.m., LastWriteTime: 23/09/2015 11:53:21 a.m., ChangeTime: 23/09/2015 11:53:21 a.m., FileAttributes: ANCI, AllocationSize: 692,224, EndOfFile: 691,600, NumberOfLinks: 1, DeletePending: False, Directory: False, IndexNumber: 0x1000000000bdb5, EaSize: 0, Access: None 0x0, Position: 0, Mode: , AlignmentRequirement: Byte"
1:09:01.7407505 p.m. NOTEPAD.EXE 4508 CreateFileMapping \\REMOTE\App\Datafiles\APP.ZZZ FILE LOCKED WITH WRITERS "SyncType: SyncTypeCreateSection, PageProtection: "
1:09:01.7407840 p.m. NOTEPAD.EXE 4508 QueryStandardInformationFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "AllocationSize: 692,224, EndOfFile: 691,600, NumberOfLinks: 1, DeletePending: False, Directory: False"
1:09:01.7408038 p.m. NOTEPAD.EXE 4508 CreateFileMapping \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS SyncType: SyncTypeOther
1:09:01.7408244 p.m. NOTEPAD.EXE 4508 CloseFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS
1:09:01.7408578 p.m. NOTEPAD.EXE 4508 ReadFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Offset: 0, Length: 32,768, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O, Priority: Normal"
1:09:01.7459986 p.m. NOTEPAD.EXE 4508 ReadFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Offset: 32,768, Length: 32,768, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O, Priority: Normal"
1:09:01.7502571 p.m. NOTEPAD.EXE 4508 ReadFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Offset: 65,536, Length: 65,536, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O, Priority: Normal"
1:09:01.7567997 p.m. NOTEPAD.EXE 4508 ReadFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Offset: 131,072, Length: 131,072, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O, Priority: Normal"
1:09:01.7759753 p.m. NOTEPAD.EXE 4508 ReadFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Offset: 262,144, Length: 262,144, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O, Priority: Normal"
1:09:01.7995374 p.m. NOTEPAD.EXE 4508 ReadFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Offset: 524,288, Length: 167,312, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O, Priority: Normal"
1:09:01.8194679 p.m. NOTEPAD.EXE 4508 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:09:01.8228119 p.m. NOTEPAD.EXE 4508 RegQueryValue HKLM\SOFTWARE\MICROSOFT\Windows\CurrentVersion\Explorer\KindMap\.ZZZ NAME NOT FOUND Length: 144
.... NOTEPAD does a whole bunch of registry stuff
1:09:01.8245487 p.m. NOTEPAD.EXE 4508 RegCloseKey HKCU\Software\Classes\.ZZZ SUCCESS
... accesses from the remote machine again. File is now unstuck.
1:09:01.9170334 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:09:01.9249583 p.m. App.exe 6276 CreateFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: None, AllocationSize: n/a, OpenResult: Opened"
1:09:01.9287995 p.m. App.exe 6276 QueryBasicInformationFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "CreationTime: 17/11/2014 5:46:01 p.m., LastAccessTime: 23/09/2015 4:00:01 a.m., LastWriteTime: 23/09/2015 11:53:21 a.m., ChangeTime: 23/09/2015 11:53:21 a.m., FileAttributes: ANCI"
1:09:01.9288154 p.m. App.exe 6276 CloseFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS
1:09:02.5679077 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:09:02.8324048 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:09:02.8813660 p.m. App.exe 6276 CreateFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: None, AllocationSize: n/a, OpenResult: Opened"
1:09:02.8924965 p.m. App.exe 6276 QueryBasicInformationFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "CreationTime: 17/11/2014 5:46:01 p.m., LastAccessTime: 23/09/2015 4:00:01 a.m., LastWriteTime: 23/09/2015 1:09:02 p.m., ChangeTime: 23/09/2015 1:09:02 p.m., FileAttributes: ANCI"
1:09:02.8925206 p.m. App.exe 6276 CloseFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS
1:09:03.5661778 p.m. App.exe 6276 CreateFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened"
1:09:03.5749668 p.m. App.exe 6276 ReadFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Offset: 630,252, Length: 61,376, Priority: Normal"
1:09:03.5750069 p.m. App.exe 6276 ReadFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Offset: 626,688, Length: 64,940, I/O Flags: Non-cached, Paging I/O, Priority: Normal"
1:09:03.5820100 p.m. App.exe 6276 CloseFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS
1:09:03.5862665 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:09:03.7772397 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:09:03.7848388 p.m. App.exe 6276 CreateFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: None, AllocationSize: n/a, OpenResult: Opened"
1:09:03.7880212 p.m. App.exe 6276 QueryBasicInformationFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "CreationTime: 17/11/2014 5:46:01 p.m., LastAccessTime: 23/09/2015 4:00:01 a.m., LastWriteTime: 23/09/2015 1:09:02 p.m., ChangeTime: 23/09/2015 1:09:02 p.m., FileAttributes: ANCI"
1:09:03.7880374 p.m. App.exe 6276 CloseFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS
1:09:04.5695737 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:09:04.7597043 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:09:04.7653450 p.m. App.exe 6276 CreateFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: None, AllocationSize: n/a, OpenResult: Opened"
1:09:04.7711026 p.m. App.exe 6276 QueryBasicInformationFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "CreationTime: 17/11/2014 5:46:01 p.m., LastAccessTime: 23/09/2015 4:00:01 a.m., LastWriteTime: 23/09/2015 1:09:04 p.m., ChangeTime: 23/09/2015 1:09:04 p.m., FileAttributes: ANCI"
1:09:04.7711189 p.m. App.exe 6276 CloseFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS
1:09:05.5674975 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:09:05.7744582 p.m. App.exe 6276 QueryDirectory \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Filter: APP.ZZZ, 1: APP.ZZZ"
1:09:05.7818819 p.m. App.exe 6276 CreateFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: None, AllocationSize: n/a, OpenResult: Opened"
1:09:05.7898488 p.m. App.exe 6276 QueryBasicInformationFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS "CreationTime: 17/11/2014 5:46:01 p.m., LastAccessTime: 23/09/2015 4:00:01 a.m., LastWriteTime: 23/09/2015 1:09:04 p.m., ChangeTime: 23/09/2015 1:09:04 p.m., FileAttributes: ANCI"
1:09:05.7898647 p.m. App.exe 6276 CloseFile \\REMOTE\App\Datafiles\APP.ZZZ SUCCESS
Я пытаюсь определить, что переводит файл данных в это состояние. Я помню, как видел ссылку на проблемы, если исключение происходит, когда сетевой файл закрыт. Может ли эта проблема указывать на что-то подобное? Я надеюсь, что кто-то сможет дать некоторое представление о том, что может происходить.
Приложение написано в Delphi 2007 (32-разрядная версия).