Comments (74)
Hmm, it sounds like phantomjs is segfaulting. Did you compile phantomjs yourself or install the binary? If you installed the binary, try compiling it yourself?
Ultimately probably there are going to be issues like this from time to time, so I should add some easy way to run phantomjs under gdb so that people can obtain stack traces and we can find/fix the issues.
from poltergeist.
I'm getting this error on a regular basis:
Capybara::Poltergeist::DeadClient:
The PhantomJS client died while processing {"name":"visit","args":["http://test.host:1337/plans"]}
capybara 1.1.2
poltergeist 0.6.0
phantomjs 1.5.0 (binary -- downloaded from site and all files inserted into rails application /spec/support/)
OSX Lion
# spec_helper.rb
Capybara.register_driver :poltergeist do |app|
if RUBY_PLATFORM.downcase.include?("darwin")
Capybara::Poltergeist::Driver.new(app, phantomjs: "#{Rails::root}/spec/support/darwin/phantomjs/bin/phantomjs")
elsif RUBY_PLATFORM.downcase.include?("linux")
Capybara::Poltergeist::Driver.new(app, phantomjs: "#{Rails::root}/spec/support/linux/phantomjs/bin/phantomjs")
end
end
Console errors:
4/20/12 11:32:42.672 PM ReportCrash: Failed to create CSSymbolicatorRef for phantomjs[18040]
4/20/12 11:32:42.780 PM ReportCrash: Failed to create dSYM-less CSSymbolicatorRef for phantomjs[18040]
from poltergeist.
@sarmiena does your crash happen every time on the same tests, or does it sometimes happen and sometimes not? does it happen on all tests or just some of them?
from poltergeist.
It happens on every other test (first one passes).
from poltergeist.
I'm having the exact same problem:
Failure/Error: click_button "Log in"
Capybara::Poltergeist::DeadClient:
The PhantomJS client died while processing {"name":"click","args":[4,2]}
with this extremely exciting code:
visit new_user_session_path
fill_in "Email", with: current_user.email
fill_in "Password", with: current_user.password
click_button "Log in"
As with @sarmiena, it happens with every other test, so I'm seeing ".F.F", after which it halts until I ^C
.
from poltergeist.
Any epiphanies?
from poltergeist.
None on my part, I've started using capybara-webkit again.
from poltergeist.
same here
from poltergeist.
Hi guys,
Sorry you've had trouble. I've posted a message on the PhantomJS list here: http://groups.google.com/group/phantomjs/browse_thread/thread/2365cfca349018f8
Let's see if anyone has ideas on there - I don't know much about OS X issues but others on that list do.
Jon
from poltergeist.
cool. thanks
from poltergeist.
Hi guys,
Can those of you who are experiencing crashes try running ulimit -c unlimited
before running your tests? This will allow your OS to generate a core file when it crashes. Which you can then send to me. On OS X the core file will be in /cores
. On Linux it'll be in the current working directory.
Thanks
Update: please don't do this on OS X. I won't be able to analyse it. The next version of PhantomJS will include crash reporting capability which will help.
from poltergeist.
I switchted to poltergeist some time ago and everything runs fine. This morning I did some gem upgrades and I noticed features tagged running with poltergeist started failing. I don't have much time to debug the issue but I would like to share the information I've got. I tracked the DeadClinet error down to the following commit:
diff --git a/Gemfile b/Gemfile
index 42b5a60..6895444 100644
--- a/Gemfile
+++ b/Gemfile
@@ -69,7 +69,7 @@ end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
- gem 'twitter-bootstrap-rails', :git => 'https://github.com/seyhunak/twitter-bootstrap-rails.git' # bootst
+ gem 'twitter-bootstrap-rails', '~> 2.1.0'
gem 'therubyracer'
gem 'uglifier', '>= 1.0.3'
end
diff --git a/Gemfile.lock b/Gemfile.lock
index e609e85..9a0ee2c 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -12,16 +12,6 @@ GIT
capybara
GIT
- remote: https://github.com/seyhunak/twitter-bootstrap-rails.git
- revision: c646c2d31174f4d3b3bd01c715ea4a3e5587c85d
- specs:
- twitter-bootstrap-rails (2.0.8.1)
- actionpack (>= 3.1)
- less-rails (~> 2.2.2)
- railties (>= 3.1)
- therubyracer (~> 0.10.1)
-
-GIT
remote: ssh://[email protected]:29418/ror/garaio/garaio_view_helpers
revision: 75327969674d6a6d7ae556b6b4b61a3eacea1fdb
branch: master
@@ -307,6 +297,11 @@ GEM
polyglot
polyglot (>= 0.3.1)
ttfunk (1.0.3)
+ twitter-bootstrap-rails (2.1.0)
+ actionpack (>= 3.1)
+ less-rails (~> 2.2.2)
+ railties (>= 3.1)
+ therubyracer (~> 0.10.1)
tzinfo (0.3.33)
uglifier (1.2.3)
execjs (>= 0.3.0)
@@ -352,7 +347,7 @@ DEPENDENCIES
therubyracer
thin
timecop
- twitter-bootstrap-rails!
+ twitter-bootstrap-rails (~> 2.1.0)
uglifier (>= 1.0.3)
virtus
will_paginate
red works and green breaks features running with poltergeist randomly. I receive errors like:
The PhantomJS client died while processing {"name":"current_url","args":[]} (Capybara::Poltergeist::DeadClient)
I hope this helps somewhat. Feel free to ask if you need additional informations.
from poltergeist.
Running into the same problem over here but the only thing I share with the above mentioned gems is actionpack :/
from poltergeist.
Just to let everyone in this ticket know, I have been working to add a crash reporter (google breakpad) to PhantomJS. This means that when the next release comes up we will have a good way of getting stack traces from crashes which should help a lot.
from poltergeist.
@jonleighton thanks for the update and your efforts. I hope we get more insight to resolve these random crashes.
from poltergeist.
👍
I've managed to narrow the high level cause down a little bit in my case: I'm accessing a website with an iframe and the error happens when finally the iframe posts a message to the top window that leads to a change of the location of the top window. Interesting enough that does NOT happen when I try to "redirect" the top window to a not existing page but does happen when the page is delivered. It's a really simple page with just one h1 or whatever. Aaaalso I do see the crash when I return a 404 from my application server and the 404 is not delivered by the webserver itself. I've to investigate on the last finding a bit more, maybe there is some middleware doing strange things or whatever. Meh meh meh.
from poltergeist.
Just noticed the same issue on my project. It happens after i upgrade the above mentioned gem twitter-bootstrap-rails from 2.0.8 to 2.1.0 and 2.0.9. A Downgrade helped.
Though the problem only occurred on my mac with phantomjs installed via homebrew. My linux machine doesnt have that problem (binary install).
from poltergeist.
Upgrading from 2.0.8 tot 2.0.9 causes the problem you say? In that case the culprit in somewhere in this string of commits. Could you try pointing your Gemfile to each of those commits, to see at what point exactly the problem appears?
You can specify a commit to point to like this:
gem 'twitter-bootstrap-rails', :github => "seyhunak/twitter-bootstrap-rails", :ref => "a1b2c3"
from poltergeist.
Okay, tried it out and it starts happening with commit "fc40fde"
seyhunak/twitter-bootstrap-rails@fc40fde
from poltergeist.
This is so weird, because there's literally nothing in there that I could imagine having any effect on the way Poltergeist behaves; it's just a bunch of edited CSS files. Granted, I don't know anything about the internals of Poltergeist, so @jonleighton should really take a look at this, but I'm stumped.
from poltergeist.
It's not really a poltergeist bug so much as a phantomjs/qt/webkit bug. Presumably that font is causing phantomjs to crash for some reason. The next version of phantomjs will be released this week - if somebody can produce a minimal test case for this crash that would be helpful and I will try to see if there is a fix possible in phantomjs.
from poltergeist.
Actually, please ignore the above, as I see that you said it only happens on a Mac. I don't have easy access to a Mac so I won't be able to debug the crash in this short time frame.
However, my main priority at the moment is adding proper crash reporting to PhantomJS to help with these situations. Linux support is already done and I hope/intend to work on OS X support tomorrow in time for the 1.6.0 release. So it should get easier after that.
from poltergeist.
I encountered this error as well, and I was also able to resolve it by locking twitter-bootstrap-rails to version 2.0.8. Thanks @senny and @Skulli
from poltergeist.
Can someone try out the master branching with PhantomJS 1.6 and let me know if you still have the problem with twitter bootstrap? Thanks
from poltergeist.
still crashing with the static 1.6 on mac os installed via brew.
Will upload the dmp file later.
from poltergeist.
I had this issue the other day and was able to resolve it that one time by allowing ActiveRecord to work in multiple threads:
class ActiveRecord::Base
mattr_accessor :shared_connection
@@shared_connection = nil
def self.connection
@@shared_connection || retrieve_connection
end
end
RSpec.configure do |config|
config.before(:suite) do
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
end
end
But now I am running into this issue again and am not able to diagnose it properly. I do not believe this is poltergeist
specific as capybara-webkit
just hangs with no timeout at all.
from poltergeist.
It seems that TTF fonts are causing an issue here. The file cubano-regular-webfont.ttf
, if we use other font formats we are OK.
from poltergeist.
We are getting this error too, using Font Awesome via https://github.com/wbzyl/less-rails-fontawesome
from poltergeist.
here is the crash dmp
http://www.file-upload.net/download-4538237/E98C5150-FD3F-46B7-A2BF-8B16FD55DADF.dmp.html
(click "Datei herunterladen")
from poltergeist.
Our tests also started passing (on Mac) when we disabled Font Awesome (https://github.com/littlebtc/font-awesome-sass-rails). Looks like a Mac+Font issue as it does not occur on Linux even with these font icons enabled.
from poltergeist.
Just like @bcardarella I just had this issue with ttf font files (svg and otf didn't cause any problem).
from poltergeist.
It is strange because as long as the file is in the asset pipeline it errors out, even if the CSS does not reference the TTF file in anyway
from poltergeist.
Here is a (not very useful) stack trace generated from that dump: https://gist.github.com/3257935
from poltergeist.
Looks the same as https://code.google.com/p/phantomjs/issues/detail?id=690
from poltergeist.
In my case it happens only after the first example, then phantom get reinitialized and the next example goes through.
To be more understandable, the odds test go through, the evens fail.
from poltergeist.
@ShogunPanda The reason why every second test works is due to the fact that poltergeist starts a new phantomjs browser after one dies.
from poltergeist.
I have created a monkey patch to prevent PhantomJS from crashing by denying access to TTF files in the assets pipeline when doing Rails integration tests.
It's unpleasant. It works until we get a fix to PhantomJS/Webkit. YMMV.
I needed this, as I both need the font-awesome-sass-rails gem in test and I use @font-face declarations within the application itself.
"Enjoy".
https://gist.github.com/3946516
from poltergeist.
instead of monkey patching to suppress TTF's from being served, you can use Rack::SimpleEndpoint
from the rack-contrib gem to 403 any requests ending in .ttf in your test environment
https://gist.github.com/3996516
from poltergeist.
@goosetav your hack worked. unfuckingbelievable.
from poltergeist.
Very nice! Should this be pulled into Poltergeist or are we still treating this as a PhantomJS bug and waiting for a fix?
from poltergeist.
Don't think it should be pulled in as it works fine under Linux, just not under OSX. TBH, this is very much a Webkit/PhantomJS bug anyway. Might be worth adding to a FAQ though.
from poltergeist.
@goosetav Thanks for pointing out rack-contrib and that solution - I like that solution much better than monkey patching asset pipeline internals!
from poltergeist.
I've reworked @goosetav's approach a little -- I prefer 'complex' middleware configurations like this as an explicit initalizer rather than code inside an environment configuration file. I've also added explicit detection of PhantomJS on OS X, passing the request on to the rest of the middleware stack otherwise. Thanks again for the inspiration @goosetav. 👍
https://gist.github.com/4003597
from poltergeist.
@mjtko thanks!
I'm not sure if this is fully PhantomJS's fault. I created a simple app to exploit the bug. I can reproduce it when using poltergeist via capybara+rspec but I cannot reproduce it using PhantomJS directly.
Of course, my test calls to PhantomJS are not 100% analogous to what's occurring when poltergeist / capybara is being used.
The bug is reproducible when visit
is called a second time AND when that page contains a TrueType Font declaration. PhantomJS itself has no issue rendering the TrueType font - you can see this by hitting the page directly using the script in the root of the app and looking at the generated screenshot.
Looking over the debug output from poltergeist, I notice a reset()
method is getting called but I don't see that in the PhantomJS 1.7 API. Should close() be called instead? Or is it possible the PhantomJS page object is getting used twice by mistake?
@jonleighton - any insights here? I know you don't have easy access to OSX -- I can try running some tests for you so we can properly report bugs upstream if necessary.
the repo is here: https://github.com/goosetav/true_type_bug
output from rspec (with poltergeist debug output) is here: https://gist.github.com/4004813
from poltergeist.
Perhaps someone can submit a PR to add an explanation of this to the troubleshooting section of the README?
I am hoping that the WebKIt updates in Qt 4.8.3 might fix this problem, but we'll have to wait and see when PhantomJS upgrades to that (it's currently on 4.8.2).
from poltergeist.
Let me know if you think they need to be clearer and I'll modify and squash.
from poltergeist.
I seem to be having a very similar issue occurring on my centos 6 machine that is acting as my build server (running jenkins). Running visit just once from cucumber works, but running twice always fails with the exact same error listed here.
If anyone would like my puppet recipe that gets my centos machine in shape maybe they could load it up on a Vagrant box and try it out?
My app is using bootstrap, but I looked through the css and didn't see any reference to a TT font.
Strangely enough, it works fine on OS X for me.
I'm installing PhantomJS 1.7.0 in both cases.
from poltergeist.
Some more detail - as someone previously said, this really feels like a poltergeist issue not a PhantomJS issue.
This does not work:
Scenario: Viewing products
Given I am on the products page
Then I should see products
And one product is set as default
Scenario: Click on a product
Given I am on the products page
When I click on a product
Then I should see a list of rate plans
However, this does work:
Scenario: Viewing products
Given I am on the products page
Then I should see products
And one product is set as default
Given I am on the products page
When I click on a product
Then I should see a list of rate plans
Note that it is the "Given I am on the products page" step which fails when two scenarios are defined, this step is pretty basic, it's implemented as:
Given /^I am on the products page$/ do
visit('/products')
end
from poltergeist.
@tsgautier sounds like a different issue if there is no TTF font. do you have a crash dump? if so please open a separate issue and provide the dump.
from poltergeist.
@tsgautier I think I have the same CentOS issue. The font disabling solution in goosetav's gift does not resolve it.
I filed it separately as #200. #200
from poltergeist.
+1 Also saw Capybara crashing on OSX after adding @font-face file referencing .ttf. Commented out the .ttf and worked again.
from poltergeist.
I've upgraded the version of Qt bundled with PhantomJS in ariya/phantomjs#367.
Could somebody on OS X who is affected by this bug please try building it to see if this fixes the problem? I have no idea if it will, but it's possible that the bug has been fixed in the newer Qt/WebKit version.
For build instructions see http://phantomjs.org/build.html. You need to checkout my branch, obviously.
from poltergeist.
Ok, I've kicked off the build. Will get back to you in, well, a short while once it's built. 😄
from poltergeist.
I'm giving it a try as well
On Dec 12, 2012, at 2:19 PM, Jon Leighton [email protected] wrote:
I've upgraded the version of Qt bundled with PhantomJS in ariya/phantomjs#367.
Could somebody on OS X who is affected by this bug please try building it to see if this fixes the problem? I have no idea if it will, but it's possible that the bug has been fixed in the newer Qt/WebKit version.
For build instructions see http://phantomjs.org/build.html. You need to checkout my branch, obviously.
—
Reply to this email directly or view it on GitHub.
from poltergeist.
No joy I'm afraid, looks like it's still dying on TTFs. 😢
from poltergeist.
Ok, thanks for testing. It sounds like there is a plan to update to a newer version of WebKit in the next release. It's not happening this release because it will be tricky to do. But that may solve the problem if/when it happens.
from poltergeist.
No problem, thanks for keeping us posted and for the Qt upgrade regardless!
from poltergeist.
yep, same results. output from a failing spec can be found here: https://gist.github.com/4004813
crash dump is in this repo: https://github.com/goosetav/true_type_bug/tree/master/crash-dump
from poltergeist.
Im experiencing the same problems, both with capybara-webkit and poltergeist.
Using capybara-webkit with qt 4.8.3 also did not seem to fix the issue, so that update does not fix that I think.
from poltergeist.
Tested capybara-webkit using qt 4.8.4 built from source now and had the same issues.
So I think 4.8.4 may not be a fix for phantom js too.
=(
from poltergeist.
Is there any simplistic PhantomJS example which reproduce the issue? Perhaps just by loading a particular web page someone has crafted to crash it?
from poltergeist.
Can someone help ariya repro the issue? https://code.google.com/p/phantomjs/issues/detail?id=690#c9
from poltergeist.
Repro?
On Dec 25, 2012, at 7:16 PM, Jon Leighton [email protected] wrote:
Can someone help ariya repro the issue? https://code.google.com/p/phantomjs/issues/detail?id=690#c9
—
Reply to this email directly or view it on GitHub.
from poltergeist.
Looks like he's already reproduced based on his last couple comments
I'm looking into dumping the poltergeist sequence into a .js file that can be run directly against phantomjs
On Dec 25, 2012, at 6:25 PM, Sam Granieri [email protected] wrote:
Repro?
On Dec 25, 2012, at 7:16 PM, Jon Leighton [email protected] wrote:
Can someone help ariya repro the issue? https://code.google.com/p/phantomjs/issues/detail?id=690#c9
—
Reply to this email directly or view it on GitHub.—
Reply to this email directly or view it on GitHub.
from poltergeist.
@goosetav If that's available, it will significantly help my direct PhantomJS debugging!
from poltergeist.
i just committed a couple scripts that will reproduce the crash directly from PhantomJS to https://github.com/goosetav/true_type_bug
running phantomjs crash-phantom.js
reproduces the bug
I also added a version of poltergeist's javascripts that disables the websocket and sends the commands directly. This may be generally useful for debugging poltergeist/phantomjs directly from the phantomjs cli -- I used this to track down the call sequence inside of poltergeist necessary to reproduce the crash
(cross posting to https://code.google.com/p/phantomjs/issues/detail?id=690 as well)
from poltergeist.
FYI - see last comments in http://code.google.com/p/phantomjs/issues/detail?id=690
Probable fix coming for this bug in PhantomJS 1.8.1
from poltergeist.
PhantomJS 1.8.1 is out: https://groups.google.com/d/topic/phantomjs/VhPYwDoEcc4/discussion.
Please have a look and verify that this does not cause the crash anymore. Thank you!
from poltergeist.
Verified. This does indeed fixed the problem.
from poltergeist.
weeeeeeeeeeeeeeeeee 💥 👏 👯 🎉 Awesome!
from poltergeist.
Unfortunately, upgrading to phantomJS 1.8.1 didn't fix my problem.
I still get DeadClient errors every time I run this code:
within(:css, "form#node-type-form") do
fill_in("name", :with => content_type)
fill_in("description", :with => description)
click_button("edit-submit")
end
The shell output using Ruby 1.8, Cucumber, Capybara (1.1.3), Poltergeist (1.0.2) and PhantomJS 1.8.1 looks like this:
The PhantomJS client died while processing {"args":[2,3],"name":"click"} (Capybara::Poltergeist::DeadClient)
(eval):2:in `send'
(eval):2:in `click_button'
./features/step_definitions/content_creation_steps.rb:17
./features/step_definitions/content_creation_steps.rb:14:in `/^I create a content type named ["']([^"']+)["'] with description ["']([^"']+)["']$/'
features/fivestar.feature:24:in `And I create a content type named "fivestar-01" with description "fivestar type"'
Here's a crashdump of phantomJS I obtained after it failed.
Update:
After setting the debug setting to true, I found out that a JS error is thrown:
options = {
:js_errors => false,
:window_size => [1280, 768],
:debug => true
}
{"args"=>["http:/my.site/path"], "name"=>"visit"}
{"error"=>{"args"=>[[{"stack"=>"TypeError: 'undefined' is not an object (evaluating 'jQuery.timeago.settings')\n at http://my.site/sites/all/modules/timeago/timeago.js?mgexlw:13", "message"=>"TypeError: 'undefined' is not an object (evaluating 'jQuery.timeago.settings')"}]], "name"=>"Poltergeist.JavascriptError"}}
Capybara::Poltergeist::JavascriptError
{"args"=>[".//body[contains(concat(' ', @class, ' '), ' logged-in ')]"], "name"=>"find"}
{"response"=>{"ids"=>[0], "page_id"=>1}}
It looks like the problem is gone after fixing it.
from poltergeist.
@pfleidi Your stack trace has not indicated the same TrueType font problem. However, if that still happens (again), feel free to open a new issue.
from poltergeist.
@ariya Thanks. Here's the new issue: #232
from poltergeist.
This is fixed by PhantomJS 1.8.1. Closing.
from poltergeist.
Related Issues (20)
- React event not triggered [help] HOT 2
- Capybara::Poltergeist::TimeoutError in some environments HOT 23
- ReferenceError: Can't find variable: Audio HOT 1
- React components not loading HOT 1
- Following jQuery line of code does not work in anything above v1.8.1 HOT 8
- Typo in keys method HOT 1
- Version of JS supported HOT 1
- Broken rails UJS loading when use arrow functions HOT 1
- Timeout occurs causing all following javascript tests to fail. HOT 3
- Capybara::Poltergeist::StatusFailError on 302 redirects with port numbers HOT 2
- Future of Poltergeist HOT 14
- Screenshot is not created HOT 1
- Authz request header missing HOT 5
- User agent does not persist across windows HOT 3
- Capybara::Poltergeist::TimeoutError when running CI tests HOT 7
- current_url returns empty string on about:blank HOT 3
- page.current_path always root HOT 2
- Possible make a method that check if JS Alert exist
- TypeError When dealing with link clicks via Capybara::Session HOT 2
- Capybara::Poltergeist::StatusFailError: failed to reach server (but manually I can connect perfectly) HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from poltergeist.