Closed
Bug 1231745
Opened 9 years ago
Closed 9 years ago
"WindowsError: [Error 2] The system cannot find the file specified" sometimes at the end of bisection
Categories
(Testing :: mozregression, defect)
Testing
mozregression
Tracking
(firefox45 affected)
RESOLVED
FIXED
Tracking | Status | |
---|---|---|
firefox45 | --- | affected |
People
(Reporter: epinal99-bugzilla2, Assigned: parkouss)
Details
(Whiteboard: [mozfr-community])
Attachments
(1 file)
Error at the end of bisection: Traceback (most recent call last): File "C:\Python27\Scripts\mozregression-script.py", line 9, in <module> load_entry_point('mozregression==2.0.1', 'console_scripts', 'mozregression') () File "C:\Python27\lib\site-packages\mozregression\main.py", line 294, in main app.clear() File "C:\Python27\lib\site-packages\mozregression\main.py", line 69, in clear mozfile.remove(self._download_dir) File "C:\Python27\lib\site-packages\mozfile\mozfile.py", line 229, in remove _update_permissions(os.path.join(root, entry)) File "C:\Python27\lib\site-packages\mozfile\mozfile.py", line 202, in _update_ permissions stats = os.stat(path) WindowsError: [Error 2] Le fichier spécifié est introuvable: 'c:\\users\\user\ \appdata\\local\\temp\\tmpoojmxv\\tmpgkjnpq.tmp'
I think it appears with a profile specified: C:\Users\user>mozregression --bits=32 --find-fix --repo=fx-team --bad=363d8679 31b54a7285eab599297386bdb9c63dd9 --good=432bea2c0c685740470dd5e1e25dd90ecba395c1 --profile=C:/Users/user/AppData/Roaming/Mozilla/Firefox/Profiles/joa7xru5.nig htly18 --profile-persistence=reuse ********** You should use a config file. Please use the --write-config command line flag to help you create one. ********** 0:01.18 LOG: MainThread main INFO Getting fx-team builds between 432bea2c0c6857 40470dd5e1e25dd90ecba395c1 and 363d867931b54a7285eab599297386bdb9c63dd9 0:05.00 LOG: MainThread Bisector INFO Pushlog: https://hg.mozilla.org/integration/fx-team/pushloghtml?fromchange=363d867931b54a 7285eab599297386bdb9c63dd9&tochange=432bea2c0c685740470dd5e1e25dd90ecba395c1 0:05.01 LOG: MainThread download INFO Downloading build from: https://queue.tas kcluster.net/v1/task/qiNC0az5S5aMh54-UaQjHQ/runs/0/artifacts/public%2Fbuild%2Ffi refox-45.0a1.en-US.win32.zip ===== Downloaded 100% ===== 1:55.19 LOG: MainThread Test Runner INFO Running fx-team build built on 2015-11 -10 20:03:24.834000, revision 73f07190 1:57.01 LOG: MainThread Test Runner INFO Launching c:\users\user\appdata\loca l\temp\tmpmlusqd\firefox\firefox.exe 1:57.09 LOG: MainThread mozversion INFO application_buildid: 20151110094435 1:57.09 LOG: MainThread mozversion INFO application_changeset: 73f07190af6de7bc 7f8da17541814e05b5571759 1:57.09 LOG: MainThread mozversion INFO application_name: Firefox 1:57.09 LOG: MainThread mozversion INFO application_repository: https://hg.mozi lla.org/integration/fx-team 1:57.09 LOG: MainThread mozversion INFO application_version: 45.0a1 Was this inbound build good, bad, or broken? (type 'good', 'bad', 'skip', 'retry ' or 'exit' and press Enter): bad 2:12.07 LOG: MainThread Bisector INFO Narrowed inbound regression window from [ 363d8679, 432bea2c] (4 revisions) to [73f07190, 432bea2c] (2 revisions) (~1 step s left) 2:12.07 LOG: MainThread main INFO Oh noes, no (more) inbound revisions :( 2:12.07 LOG: MainThread Bisector INFO First good revision: 432bea2c0c685740470d d5e1e25dd90ecba395c1 2:12.07 LOG: MainThread Bisector INFO Last bad revision: 73f07190af6de7bc7f8da1 7541814e05b5571759 2:12.07 LOG: MainThread Bisector INFO Pushlog: https://hg.mozilla.org/integration/fx-team/pushloghtml?fromchange=73f07190af6de7 bc7f8da17541814e05b5571759&tochange=432bea2c0c685740470dd5e1e25dd90ecba395c1 Traceback (most recent call last): File "C:\Python27\Scripts\mozregression-script.py", line 9, in <module> load_entry_point('mozregression==2.0.1', 'console_scripts', 'mozregression') () File "C:\Python27\lib\site-packages\mozregression\main.py", line 294, in main app.clear() File "C:\Python27\lib\site-packages\mozregression\main.py", line 69, in clear mozfile.remove(self._download_dir) File "C:\Python27\lib\site-packages\mozfile\mozfile.py", line 229, in remove _update_permissions(os.path.join(root, entry)) File "C:\Python27\lib\site-packages\mozfile\mozfile.py", line 202, in _update_ permissions stats = os.stat(path) WindowsError: [Error 2] Le fichier spÚcifiÚ est introuvable: 'c:\\users\\user\ \appdata\\local\\temp\\tmpf7wfth\\tmp_nr7y8.tmp'
Assignee | ||
Comment 2•9 years ago
|
||
Hey, thanks Loic for reporting that bug! I think this is a race condition, because we are asking to stop the background downloads in there: https://github.com/mozilla/mozregression/blob/master/mozregression/main.py#L65 but then we remove the folder - and during this time, the download threads probably ends - removing the file. That means that we list the file name, then just before we try to access it it gets removed by the thread. I think that if you use a --persist directory, that won't happen - because then the directory do not need to be removed. I believe this is why no one reported this before, because that is a recommended option when you use --write-config. So, to fix this, we should explicitly wait for the background thread to finish, or use some kind of locking mechanism to prevent that race condition.
Flags: needinfo?(ahalberstadt)
Assignee | ||
Comment 3•9 years ago
|
||
Oh ahal, sorry my question is here: Or maybe we want mozfile.remove to be thread safe ?
Comment 4•9 years ago
|
||
I'm not 100% sure what you're proposing. You mean make mozfile not remove files that are still being used by other threads? That sounds really complicated, how would it know? I'd just make that call to cancel() block from returning until the downloads were actually canceled.
Flags: needinfo?(ahalberstadt)
Assignee | ||
Comment 5•9 years ago
|
||
Yeah, I guess I wanted to handle those kind of exceptions in mozfile directly, but indeed that should be probably complicated. :) Agreed, blocking the downloading threads seems to me like the best option also.
Assignee | ||
Comment 6•9 years ago
|
||
Comment 7•9 years ago
|
||
Comment on attachment 8697445 [details] [review] fix race condition when removing dl dir Left a question in the review for you. Feel free to r? again after it's either answered or addressed. :)
Attachment #8697445 -
Flags: review?(wlachance)
Comment 8•9 years ago
|
||
Comment on attachment 8697445 [details] [review] fix race condition when removing dl dir After further discussion, happy to r+ this. Leaving it up to you to decide the details.
Attachment #8697445 -
Flags: review+
Assignee | ||
Comment 9•9 years ago
|
||
ok thanks Will, I'm changing it to be more explicit, as discussed in github comments. I will add a comment to explain the wait() call - and a comment in the commit to explain why that works in the GUI.
Assignee | ||
Comment 10•9 years ago
|
||
Landed in https://github.com/mozilla/mozregression/commit/e37f0dc3241c2e0bedaf2e614f40606a919c1392. I will release a patch release with that fix, waiting some more days to see if something new comes up before I do that.
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•