adobe-research / theseus

A pretty darn cool JavaScript debugger for Brackets
Other
1.34k stars 69 forks source link

Impossible to debug, slow #10

Closed paulmillr closed 11 years ago

paulmillr commented 11 years ago

in mid-sized node app, theseus with brackets 25 eats 2+gb of ram and then crashes w FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory.

Also, speed slowdown is like 95-99%.

You can try it by yourself

  1. clone git@github.com:brunch/brunch.git
  2. coffee -bo lib/ src/ && cd ../
  3. ./brunch/bin/brunch new test
  4. cd test
  5. node-theseus ../brunch/bin/brunch build
alltom commented 11 years ago

Yeah, when Theseus starts paging it's game over.

There aren't any features I could make optional that would help on large projects (without compromising the API), but policies for partial recording are on the backlog. There's also the bug that Theseus will make shallow copies of objects regardless of how large they are, including buffers like image files. That bug is higher on the backlog.

Thanks for this test case. I'll check it for bottlenecks I haven't discovered yet.

alltom commented 11 years ago

I recently committed some changes to fondue master that ought to make debugging larger projects manageable. I tried to test them with your project, but I ran into a problem. Here's what I did.

  1. git clone https://github.com/brunch/brunch.git (I used https instead of SSH)
  2. cd brunch
  3. npm install (This seemed necessary)
  4. coffee -bo lib/ src/
  5. cd ..
  6. ./brunch/bin/brunch new test

The last step failed with:

26 Jun 14:40:13 - log: Copying local skeleton...
26 Jun 14:40:13 - log: Created skeleton directory layout
26 Jun 14:40:13 - log: Installing packages...
26 Jun 14:40:13 - error: npm ERR! install Couldn't read dependencies
npm ERR! Error: ENOENT, open '/Users/tlieber/src/test/package.json'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Darwin 12.3.0
npm ERR! command "/usr/local/Cellar/node/0.10.8/bin/node" "/usr/local/bin/npm" "install"
npm ERR! cwd /Users/tlieber/src/test
npm ERR! node -v v0.10.8
npm ERR! npm -v 1.2.23
npm ERR! path /Users/tlieber/src/test/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/tlieber/src/test/npm-debug.log
npm ERR! not ok code 0

The test/ directory is empty except for npm-debug.log. I tried checking out the 1.6.7 tag with the same result.

paulmillr commented 11 years ago

brunch is used with brunch-with-chaplin as submodule. you’ve did the right thing, except you forgot to clone submodules (git clone --recursive)

alltom commented 11 years ago

Got it, thanks! I don't have a problem building that skeleton with node-theseus. If you know of a larger project I should test the build script on, please let me know.

$ ~/src/node-theseus/bin/node-theseus ../brunch/bin/brunch build
26 Jun 15:06:48 - info: compiled in 913ms
$ ../brunch/bin/brunch build
26 Jun 15:06:53 - info: compiled in 531ms

(I'm testing on the master branches of Theseus, node-theseus, and fondue, so your results may vary until the next releases (probably tomorrow).)

paulmillr commented 11 years ago

Try cloning this brunch app https://github.com/paulmillr/ostio and executing brunch build there.

Although even on default skeleton the stuff was very slow for me

paulmillr commented 11 years ago

You’re running Brackets editor with brunch source code (lib/) opened, right?

alltom commented 11 years ago

Building Ostio takes longer (4842ms with node-theseus, 2237ms without). My node process gets to 170MB memory (it was 100MB on the skeleton project). I ran it with the brunch project open in Brackets.

One of the things I added was a check that would pause instrumentation if there were more than 4,096 function invocations in a single tick (resuming on the next tick). Building Ostio does trigger it once, but even when I bump the cap so that it doesn't, it doesn't take more than 5 seconds to complete.

paulmillr commented 11 years ago

Very weird stuff then, i’ll definitely try new release ASAP

alltom commented 11 years ago

I'll let you know when it's released. :)