3 Occasionally odd {issues}[link:ISSUES.html] arise without a transparent or
4 acceptable solution. Those issues are documented here.
6 * Under some versions of Ruby 1.8, it is necessary to call +srand+ in an
7 after_fork hook to get correct random number generation.
9 See http://redmine.ruby-lang.org/issues/show/4338
11 * On Ruby 1.8 prior to Ruby 1.8.7-p248, *BSD platforms have a broken
12 stdio that causes failure for file uploads larger than 112K. Upgrade
13 your version of Ruby or continue using Unicorn 1.x/3.4.x.
15 * For notes on sandboxing tools such as Bundler or Isolate,
16 see the {Sandbox}[link:Sandbox.html] page.
18 * nginx with "sendfile on" under FreeBSD 8 is broken when
19 uploads are buffered to disk. Disabling sendfile is required to
20 work around this bug which should be fixed in newer versions of FreeBSD.
22 * When using "preload_app true", with apps using background threads
23 need to restart them in the after_fork hook because threads are never
24 shared with child processes. Additionally, any synchronization
25 primitives (Mutexes, Monitors, ConditionVariables) should be
26 reinitialized in case they are held during fork time to avoid
27 deadlocks. The core Ruby Logger class needlessly uses a MonitorMutex
28 which can be disabled with a {monkey patch}[link:examples/logger_mp_safe.rb]
32 * Under Ruby 1.9.1, methods like Array#shuffle and Array#sample will
33 segfault if called after forking. Upgrade to Ruby 1.9.2 or call
34 "Kernel.rand" in your after_fork hook to reinitialize the random
37 See http://redmine.ruby-lang.org/issues/show/2962 for more details
39 * Rails 2.3.2 bundles its own version of Rack. This may cause subtle
40 bugs when simultaneously loaded with the system-wide Rack Rubygem
41 which Unicorn depends on. Upgrading to Rails 2.3.4 (or later) is
42 strongly recommended for all Rails 2.3.x users for this (and security
43 reasons). Rails 2.2.x series (or before) did not bundle Rack and are
44 should be unnaffected. If there is any reason which forces your
45 application to use Rails 2.3.2 and you have no other choice, then
46 you may edit your Unicorn gemspec and remove the Rack dependency.
48 ref: http://mid.gmane.org/20091014221552.GA30624@dcvr.yhbt.net
49 Note: the workaround described in the article above only made
50 the issue more subtle and we didn't notice them immediately.
52 * WONTFIX: code reloading and restarts with Sinatra 0.3.x (and likely older
53 versions) apps is broken. The workaround is to force production
54 mode to disable code reloading as well as disabling "run" in your
58 Since this is no longer an issue with Sinatra 0.9.x apps, this will not be
59 fixed on our end. Since Unicorn is itself the application launcher, the
60 at_exit handler used in old Sinatra always caused Mongrel to be launched
61 whenever a Unicorn worker was about to exit.
63 Also remember we're capable of replacing the running binary without dropping
64 any connections regardless of framework :)