2009-07-25 15 views
3

Je suis en train de perdre du temps avec nos scripts de construction: J'utilise Waf pour conduire notre processus de construction, et tout fonctionne bien, sauf sur Windows, où je reçois des erreurs intermitent pendant les builds.Comment déboguer les erreurs de "système d'accès refusé" du système de fichiers sur win32?

Les erreurs sont toujours essentiellement des erreurs «accès refusé» d'une forme ou d'une autre, liées aux fichiers temporaires que j'ai créés pendant le processus de construction pour permettre à un outil de fonctionner et de faire son travail. Par exemple, avant d'exécuter NSIS pour générer un programme d'installation exécutable, je dois "mettre en scène" tous les fichiers requis dans le répertoire de construction et exécuter la commande à partir de là. Parfois, les choses fonctionnent comme prévu, mais d'autres fois je reçois une erreur signalé sur l'un des fichiers que je l'ai copié par exemple:

File: failed opening file "Platform\\Win32\\lxml-2.2.1-py2.6-win32.egg

J'ai passé un âge à essayer de comprendre ce que la question est mais son vraiment difficile parce que le problème est intermittent. La dernière chose que j'ai essayé est en utilisant procmon pour surveiller l'accès au système de fichiers pour essayer de suivre ce qui causait l'erreur d'accès: Je sais que le fichier est là donc il doit y avoir quelque chose qui a le fichier ouvert. J'inclus la sortie pertinente ci-dessous parce que je ne peux pas voir ce qui ne va pas: Python semble fermer le fichier avant que NSIS veuille l'ouvrir mais que NSIS échoue. Quelqu'un peut-il nous éclairer à ce sujet? Cette question n'est pas isolé à cette situation, mais aussi à d'autres cas où je Spawn sous-processus pour travailler avec les fichiers que j'ai copiés construire des répertoires ...

7:35:15.9704427 PM python.exe 4968 QueryOpen ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg FAST IO DISALLOWED 
7:35:15.9707497 PM python.exe 4968 CreateFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened 
7:35:15.9708634 PM python.exe 4968 QueryBasicInformationFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS CreationTime: 7/25/2009 7:35:11 PM, LastAccessTime: 7/25/2009 7:35:11 PM, LastWriteTime: 7/25/2009 7:35:11 PM, ChangeTime: 7/25/2009 7:35:11 PM, FileAttributes: A 
7:35:15.9709271 PM python.exe 4968 CloseFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS 
7:35:15.9785180 PM python.exe 4968 CreateFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS Desired Access: Write Attributes, Synchronize, Disposition: Open, Options: Synchronous IO Non-Alert, Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened 
7:35:15.9786119 PM python.exe 4968 SetBasicInformationFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS CreationTime: 1/1/1601 1:00:00 AM, LastAccessTime: 1/1/1601 1:00:00 AM, LastWriteTime: 1/1/1601 1:00:00 AM, ChangeTime: 1/1/1601 1:00:00 AM, FileAttributes: AN 
7:35:15.9787155 PM python.exe 4968 CloseFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS 
7:35:15.9789401 PM python.exe 4968 QueryOpen ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg FAST IO DISALLOWED 
7:35:15.9790309 PM python.exe 4968 CreateFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened 
7:35:15.9790700 PM python.exe 4968 QueryBasicInformationFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS CreationTime: 7/25/2009 7:35:11 PM, LastAccessTime: 7/25/2009 7:35:11 PM, LastWriteTime: 7/25/2009 7:35:11 PM, ChangeTime: 7/25/2009 7:35:12 PM, FileAttributes: A 
7:35:15.9790952 PM python.exe 4968 CloseFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS 
7:35:15.9792809 PM python.exe 4968 CreateFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS Desired Access: Write Attributes, Synchronize, Disposition: Open, Options: Synchronous IO Non-Alert, Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened 
7:35:15.9793270 PM python.exe 4968 SetBasicInformationFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS CreationTime: 1/1/1601 1:00:00 AM, LastAccessTime: 1/1/1601 1:00:00 AM, LastWriteTime: 1/1/1601 1:00:00 AM, ChangeTime: 1/1/1601 1:00:00 AM, FileAttributes: AN 
7:35:15.9794041 PM python.exe 4968 CloseFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS 
7:35:16.3508170 PM makensis.exe 3296 CreateFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SHARING VIOLATION Desired Access: Generic Read, Disposition: Open, Options: Sequential Access, Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, AllocationSize: n/a 
7:35:16.3557763 PM python.exe 4968 QueryOpen ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg FAST IO DISALLOWED 
7:35:16.3558928 PM python.exe 4968 CreateFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened 
7:35:16.3559461 PM python.exe 4968 QueryNetworkOpenInformationFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS CreationTime: 7/25/2009 7:35:11 PM, LastAccessTime: 7/25/2009 7:35:11 PM, LastWriteTime: 7/25/2009 7:35:11 PM, ChangeTime: 7/25/2009 7:35:12 PM, AllocationSize: 1/1/1601 1:00:00 AM, EndOfFile: 1/1/1601 1:00:00 AM, FileAttributes: A 
7:35:16.3560121 PM python.exe 4968 CloseFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS 
7:35:16.3562048 PM python.exe 4968 CreateFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SHARING VIOLATION Desired Access: Read Attributes, Delete, Disposition: Open, Options: Non-Directory File, Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 
7:35:21.9320579 PM python.exe 3160 CloseFile ..\Path\To\Build\lxml-2.2.1-py2.6-win32.egg SUCCESS 

Répondre

3

Dans cette trace, le fichier est déjà là lorsque la trace commence . Donc, quelque chose d'autre peut l'avoir laissé ouvert (par exemple un scanner de virus, ou le service d'indexation).

+0

Les deux seuls processus que j'ai vu impliqué étaient Python et NSIS. Je pourrais coller le reste de la sortie mais c'est vraiment long .... – jkp

+1

Mais peut-être que Python a le fichier ouvert plus d'une fois? Vous avez vraiment besoin de regarder l'histoire complète, et le match s'ouvre avec des fermetures. –

+0

Martin: merci beaucoup pour le pointeur, je l'ai fait tout à l'heure et j'ai trouvé que depuis la création des fichiers jusqu'au point où NSIS essaie d'y accéder, Python a un autre appel ouvert (CreateFile) que les appels proches. Maintenant, je ne sais plus quoi faire à ce sujet! Des indices? – jkp