Skip to content
This repository has been archived by the owner on Mar 16, 2020. It is now read-only.

guard against IO errors when traversing the top few dirs of a project #402

Closed
mit-mit opened this issue Oct 7, 2015 · 4 comments · Fixed by #405
Closed

guard against IO errors when traversing the top few dirs of a project #402

mit-mit opened this issue Oct 7, 2015 · 4 comments · Fixed by #405
Labels

Comments

@mit-mit
Copy link
Contributor

mit-mit commented Oct 7, 2015

Created a small hello world program and tried to save it as c:\users\m\Documents\hello.dart.

Got the following stack trace:

Uncaught Error: Error: EPERM: operation not permitted, scandir 'C:\Users\miksen\Documents\My Music'
Stack Trace:
Error: EPERM: operation not permitted, scandir 'C:\Users\miksen\Documents\My Music'
  at Error (native)
  at Object.fs.readdirSync (fs.js:813:18)
  at Object.fs.readdirSync (ATOM_SHELL_ASAR.js:449:28)
  at Object.fsPlus.listSync (C:\Users\miksen\AppData\Local\atom\app-1.0.19\resources\app.asar\node_modules\fs-plus\lib\fs-plus.js:171:18)
  at Directory.module.exports.Directory.getEntriesSync (C:\Users\miksen\AppData\Local\atom\app-1.0.19\resources\app.asar\node_modules\pathwatcher\lib\directory.js:254:18)
  at JsObject.dart.JsObject.callMethod$2 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:40603:44)
  at JsObject.dart.JsObject.callMethod$1 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:40606:21)
  at Directory.dart.ProxyHolder.invoke$4 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:25716:23)
  at Directory.dart.ProxyHolder.invoke$1 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:25726:21)
  at Directory.dart.Directory.getEntriesSync$0 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:20317:46)
  at ProjectManager.dart.ProjectManager._findDartProjects$2 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:27450:43)
  at ProjectManager.dart.ProjectManager._findDartProjects$2 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:27453:54)
  at ProjectManager.dart.ProjectManager._fullScanForProjects$0 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:27396:38)
  at ProjectManager.dart.ProjectManager._handleProjectPathsChanged$1 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:27422:14)
  at [object Object].<anonymous> (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:18226:32)
  at _RootZone.dart._RootZone.runUnaryGuarded$2 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:34575:20)
  at _BroadcastSubscription.dart._BufferingStreamSubscription._sendData$1 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:33712:20)
  at _DelayedData.dart._DelayedData.perform$1 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:33906:18)
  at _StreamImplEvents.dart._StreamImplEvents.handleNext$1 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:33979:16)
  at _PendingEvents_schedule_closure.dart._PendingEvents_schedule_closure.call$0 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:33954:12)
  at _AsyncCallbackEntry.dart._AsyncCallbackEntry.callback$0 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:32865:30)
  at [object Object].dart._microtaskLoop (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:31465:12)
  at [object Object].dart._microtaskLoopEntry (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:31471:11)
  at TimerImpl_internalCallback0.dart.TimerImpl_internalCallback0.call$0 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:17389:35)
  at invokeClosure_closure.dart.invokeClosure_closure.call$0 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:19069:41)
  at _IsolateContext.dart._IsolateContext.eval$1 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:17003:25)
  at [object Object].dart._callInIsolate (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:16647:28)
  at dart.invokeClosure (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:18126:18)
  at C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:18147:18
  at [object Object].dart.wrapException (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:17978:17)
  at _rootHandleUncaughtError_closure.dart._rootHandleUncaughtError_closure.call$0 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:34544:17)
  at _AsyncCallbackEntry.dart._AsyncCallbackEntry.callback$0 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:32865:30)
  at [object Object].dart._microtaskLoop (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:31465:12)
  at [object Object].dart._microtaskLoopEntry (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:31471:11)
  at TimerImpl_internalCallback0.dart.TimerImpl_internalCallback0.call$0 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:17389:35)
  at invokeClosure_closure.dart.invokeClosure_closure.call$0 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:19069:41)
  at _IsolateContext.dart._IsolateContext.eval$1 (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:17003:25)
  at [object Object].dart._callInIsolate (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:16647:28)
  at dart.invokeClosure (C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:18126:18)
  at C:\Users\miksen\.atom\packages\dartlang\web\entry.dart.js:18147:18
@mit-mit
Copy link
Contributor Author

mit-mit commented Oct 7, 2015

This was on Windows.

@devoncarew
Copy link
Contributor

It looks like you created the file in C:\Users\miksen\Documents\hello.dart. This caused Atom to add the directory C:\Users\miksen\Documents\ as a new top-level atom project. We then scanned this new project looking to see if it was a dart project. The error:

EPERM: operation not permitted, scandir 'C:\Users\miksen\Documents\My Music'

Is either because we really don't have permissions to read the My Music directory, it doesn't exist, or there's a problem w. our's or atom's path handling when there are spaces in the path.

Can you create a project locally with a space in the path, and try and open that project in atom? That'll eliminate the space-in-path problem.

I'll add some code to guard against file i/o errors when scanning dirs.

@mit-mit
Copy link
Contributor Author

mit-mit commented Oct 7, 2015

Spaces along doesn't seem to trigger it, I tried creating:

c:\tmp
c:\tmp\foo
c:\tmp\bar
c:\tmp\baz baz

And it works fine creating files in baz baz

@devoncarew
Copy link
Contributor

Thanks for checking for issues w/ spaces! I'll do some testing on my windows machine, but I suspect it was an issue traversing into the C:\Users\miksen\Documents\My Music dir. I'll guard against errors when recursing into dirs.

@devoncarew devoncarew changed the title Error after trying to save a new dart file guard against IO errors when traversing the top few dirs of a project Oct 8, 2015
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants