# "EINVAL" Crashing with Instant Rails and PostgreSQL on Windo

**URL:** <https://www.ruby-forum.com/t/einval-crashing-with-instant-rails-and-postgresql-on-windo/53264>\
**Category:** Rails\
**Created:** [December 13, 2005, 3:59pm UTC](https://www.ruby-forum.com/t/einval-crashing-with-instant-rails-and-postgresql-on-windo/53264 "2005-12-13T15:59:02Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jeff](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e19b73/32.png) [@jeff](https://www.ruby-forum.com/u/jeff)\
**Post date:** [December 13, 2005, 3:59pm UTC](https://www.ruby-forum.com/t/einval-crashing-with-instant-rails-and-postgresql-on-windo/53264/1 "2005-12-13T15:59:02Z")

</div>

Hey all,

I was getting some similar crashes when using webbrick with high (a few  
request every second or so) load so I moved up to Apache. Specifically,  
I am using the “InstantRails” package with Apache/SCGI and PostgreSQL  
instead of mySQL. However the same problem has sprung up again and  
causes the server to spawn hundreds of separate ruby.exe processes. Is  
the below stack trace meaningful to anyone? I don’t _think_ this is a  
problem with my app, it looks like a crash in the postgres module.  
Thoughts?

Thanks,  
Jeff

Production.log paste:

Processing PagesController#index (for 212.95.252.16 at 2005-12-13  
09:47:10) [GET]  
Parameters: {“action”=\>“index”, “controller”=\>“pages”}

Errno::EINVAL (Invalid argument):

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/connection.rb:86:in  
`write’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/connection.rb:86:in  
`\<\<’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/connection.rb:86:in  
`query’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/postgres-compat.rb:33:in  
`query’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.1.3279/lib/active\_record/connection\_adapters/postgresql\_adapter.rb:63:in  
`active?’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.1.3279/lib/active\_record/connection\_adapters/abstract/connection\_specification.rb:103:in  
`retrieve\_connection’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.1.3279/lib/active\_record/connection\_adapters/abstract/connection\_specification.rb:20:in  
`connection’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.1.3279/lib/active\_record/base.rb:931:in  
`add\_limit!’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.1.3279/lib/active\_record/base.rb:924:in  
`construct\_finder\_sql’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.1.3279/lib/active\_record/base.rb:395:in  
`find' /app/models/article.rb:6:in`find\_most\_recent’  
/app/controllers/pages\_controller.rb:6:in `index’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/base.rb:853:in  
`send’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/base.rb:853:in  
`perform\_action\_without\_filters’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/filters.rb:332:in  
`perform\_action\_without\_benchmark’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/benchmarking.rb:69:in  
`perform\_action\_without\_rescue’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/benchmarking.rb:69:in  
`measure’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/benchmarking.rb:69:in  
`perform\_action\_without\_rescue’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/rescue.rb:82:in  
`perform\_action’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/base.rb:369:in  
`send’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/base.rb:369:in  
`process\_without\_session\_management\_support’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/session\_management.rb:116:in  
`process’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/rails-0.14.4.3279/lib/dispatcher.rb:38:in  
`dispatch' C:/ruby/irails/ruby/bin/scgi_service:23:in`process\_request’  
C:/ruby/irails/ruby/bin/scgi\_service:21:in `synchronize' C:/ruby/irails/ruby/bin/scgi_service:21:in`process\_request’  
C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:291:in  
`read_header' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:253:in`handle\_client’  
C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:234:in  
`initialize' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:234:in`new’  
C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:234:in  
`handle_client' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:188:in`listen’  
C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:186:in  
`initialize' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:186:in`new’  
C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:186:in `listen' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:412:in`run’  
C:/ruby/irails/ruby/bin/scgi\_service:61

Processing PagesController#index (for 70.108.248.226 at 2005-12-13  
09:47:28) [GET]  
Parameters: {“action”=\>“index”, “controller”=\>“pages”}

Errno::EINVAL (Invalid argument):

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/connection.rb:86:in  
`write’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/connection.rb:86:in  
`\<\<’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/connection.rb:86:in  
`query’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/postgres-compat.rb:33:in  
`query’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.1.3279/lib/active\_record/connection\_adapters/postgresql\_adapter.rb:63:in  
`active?’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.1.3279/lib/active\_record/connection\_adapters/abstract/connection\_specification.rb:103:in  
`retrieve\_connection’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.1.3279/lib/active\_record/connection\_adapters/abstract/connection\_specification.rb:20:in  
`connection’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.1.3279/lib/active\_record/base.rb:931:in  
`add\_limit!’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.1.3279/lib/active\_record/base.rb:924:in  
`construct\_finder\_sql’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.1.3279/lib/active\_record/base.rb:395:in  
`find' /app/models/article.rb:6:in`find\_most\_recent’  
/app/controllers/pages\_controller.rb:6:in `index’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/base.rb:853:in  
`send’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/base.rb:853:in  
`perform\_action\_without\_filters’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/filters.rb:332:in  
`perform\_action\_without\_benchmark’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/benchmarking.rb:69:in  
`perform\_action\_without\_rescue’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/benchmarking.rb:69:in  
`measure’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/benchmarking.rb:69:in  
`perform\_action\_without\_rescue’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/rescue.rb:82:in  
`perform\_action’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/base.rb:369:in  
`send’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/base.rb:369:in  
`process\_without\_session\_management\_support’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.1.3279/lib/action\_controller/session\_management.rb:116:in  
`process’

C:/ruby/irails/ruby/lib/ruby/gems/1.8/gems/rails-0.14.4.3279/lib/dispatcher.rb:38:in  
`dispatch' C:/ruby/irails/ruby/bin/scgi_service:23:in`process\_request’  
C:/ruby/irails/ruby/bin/scgi\_service:21:in `synchronize' C:/ruby/irails/ruby/bin/scgi_service:21:in`process\_request’  
C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:291:in  
`read_header' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:253:in`handle\_client’  
C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:234:in  
`initialize' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:234:in`new’  
C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:234:in  
`handle_client' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:188:in`listen’  
C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:186:in  
`initialize' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:186:in`new’  
C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:186:in `listen' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:412:in`run’  
C:/ruby/irails/ruby/bin/scgi\_service:61

---

<div class="post-metadata">

**Author:** ![jeff](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e19b73/32.png) [@jeff](https://www.ruby-forum.com/u/jeff)\
**Post date:** [December 14, 2005, 12:35pm UTC](https://www.ruby-forum.com/t/einval-crashing-with-instant-rails-and-postgresql-on-windo/53264/2 "2005-12-14T12:35:34Z")

</div>

Zed,

Thanks for the tip. I think I am going to try switching from the “pure  
ruby” postgres-pr driver to the C-based driver (which I’ve never used)  
and see what happens. If I track anything down relating to SCGI I’ll  
let you know.

Thanks,  
Jeff

---

<div class="post-metadata">

**Author:** ![jeff](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e19b73/32.png) [@jeff](https://www.ruby-forum.com/u/jeff)\
**Post date:** [December 14, 2005, 4:05am UTC](https://www.ruby-forum.com/t/einval-crashing-with-instant-rails-and-postgresql-on-windo/53264/3 "2005-12-14T04:05:10Z")

</div>

Hey Jeff,

That actually looks like the socket being used has become invalid. The  
man page on my Linux box says:

EINVAL fd is attached to an object which is unsuitable for  
writing; or the file was opened with the O\_DIRECT flag, and  
either the address specified in buf, the value specified in count, or  
the current file offset is not suitably aligned.

So that means your connection is getting closed or aborted in the  
middle of a write operation. Not sure if this helps though on Win32.

Zed

On Tue, 13 Dec 2005 09:58:20 -0500

---

<div class="post-metadata">

**Author:** ![jeff](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e19b73/32.png) [@jeff](https://www.ruby-forum.com/u/jeff)\
**Post date:** [December 16, 2005, 5:54pm UTC](https://www.ruby-forum.com/t/einval-crashing-with-instant-rails-and-postgresql-on-windo/53264/4 "2005-12-16T17:54:42Z")

</div>

Zed,

I’ve found a little more info about this “EINVAL” crashes I’m having.  
From scgi.log:

[ERR][508] C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:259:in  
`close' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:205:in`join’  
C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:205:in  
`collect_thread' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:181:in`listen’  
C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:179:in `initialize' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:179:in`new’  
C:/ruby/irails/ruby/lib/ruby/site\_ruby/1.8/scgi.rb:179:in `listen' C:/ruby/irails/ruby/lib/ruby/site_ruby/1.8/scgi.rb:412:in`run’  
C:/ruby/irails/ruby/bin/scgi\_service:61

I have that repeated many times. The consequence is that the server  
spawns new ruby processes until it chokes.

Any thoughts? Can I give you more information of any kind?

-Jeff
