Open k1r8r0wn opened 7 months ago
This can happen with some native extensions which load Objective-C. If you share the full backtrace we might be able to identify it.
Otherwise, for the sake of potentially avoiding this problem and definitely avoiding memory usage, try adding all your core gems to the preload group:
# gems.rb or Gemfile:
group :preload do
# e.g.
gem 'rails'
end
Thanks, @ioquatix for the quick reply! I've attached the example of the full trace. trace.txt
Also tried to use group :preload
- didn't help.
Make sure the pg
gem is in the preload group. Can you share what your preload group contains?
Local core-lib gem has pg inside (also the main stack - rails, etc.), but I've also tried to install the fresh one...
By the way - I have my db inside docker container (only the app is running locally for this case), maybe this is a reason?!
Okay, thanks, I'll try to reproduce this.
Thank you!
For postgres related seg fault, sometimes following helps:
export PGGSSENCMODE="disable"
I'm encountering the same report from falcon, except my issue has to do with rdkafka
, rather than with pg
.
0.0s info: Falcon::Command::Serve [oid=0x85c] [ec=0x870] [pid=94063] [2024-05-16 23:49:44 +0800]
| Falcon v0.47.6 taking flight! Using Async::Container::Forked {:count=>12, :restart=>true}.
| - Binding to: #<Falcon::Endpoint https://localhost:9292/ {}>
| - To terminate: Ctrl-C or kill 94063
| - To reload configuration: kill -HUP 94063
0.04s info: Falcon::Service::Server [oid=0x8fc] [ec=0x870] [pid=94063] [2024-05-16 23:49:44 +0800]
| Starting server on #<Falcon::Endpoint https://localhost:9292/ {}>
objc[94074]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called.
objc[94074]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
3.65s error: Async::Container::Forked [oid=0xaf0] [ec=0xb04] [pid=94063] [2024-05-16 23:49:47 +0800]
| pid 94074 SIGABRT (signal 6)
I am basically using https://github.com/socketry/roda-websockets/blob/main/examples/interactive_browser/config.ru, but adding this block within r.websocket
to create a consumer for kafka:
consumer = Rdkafka::Config.new(KAFKA_CONFIG).consumer
consumer.subscribe('test-topic')
consumer.each do |mesg|
p msg
end
And that's all it takes to get this error for Falcon. I wish I could resolve this easily myself... but I'm stuck
I'll take a look today.
Do you mind telling me what version of macOS you are using?
I was not able to reproduce the issue on:
> sw_vers
ProductName: macOS
ProductVersion: 14.4.1
BuildVersion: 23E224
I created a branch with an example, can either of you check if it fails on darwin22? I'm on darwin23.
I'm guessing I would be on darwin23 as well:
ProductName: macOS
ProductVersion: 14.3.1
BuildVersion: 23D60
export PGGSSENCMODE="disable"
It really helped , @schovi, much appreciated!
@jf are you either able to (1) upgrade the latest macOS to check if the issue goes away or (2) check the branch I gave and see if it reproduces the problem?
I'm also on a M1 MacBook Pro but I can't reproduce the issue.
sorry, to be clear, my issue is not with pg (I havent had to use that just yet). My issue is with using rdkafka with falcon (https://github.com/socketry/falcon/issues/225#issuecomment-2115615314)g
one suggestion if I may: you want to make it as easy as possible for folks to run your sample code.
It took a while for me to try to run the example:
PG.connect
parameters right (I think dbname: 'postgres'
is probably a better assumption for folks' setup than dbname: 'test'
?)falcon host /path/to/example/pgfault/falcon.rb
(as opposed to simply ruby /path/to/...
)It does not look like I have any issue with pg
(but again, my issue is using rdkafka
with falcon):
0.0s info: Falcon::Command::Host [oid=0x7d0] [ec=0x7e4] [pid=73820] [2024-05-20 21:12:16 +0800]
| Falcon Host v0.47.6 taking flight!
| - Configuration: /Users/jf/PROJS/falcon/examples/pgfault/falcon.rb
| - To terminate: Ctrl-C or kill 73820
| - To reload: kill -HUP 73820
#<PG::Connection:0x000000012071d6a0 host=127.0.0.1 port=5432 user=postgres>
0.18s info: Falcon::Service::Server [oid=0xb90] [ec=0x7e4] [pid=73820] [2024-05-20 21:12:16 +0800]
| Starting hello.localhost on #<Falcon::ProxyEndpoint endpoint=#<IO::Endpoint::UNIXEndpoint "/Users/jf/PROJS/falcon/examples/pgfault/application.ipc">>
@jf try setting OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
this worked for me.
Hello!
When I run
be falcon host
& make a simple health check request I got this in.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/pg-1.5.4/lib/pg/connection.rb:690
:And then have a server restart.
When I use
be falcon serve -b http:/localhost:3000
, get this endless forked loop:be falcon serve -b --threaded http:/localhost:3000
works fine. No problems inside Docker even with forked mode.Any thoughts, suggestions? How to correctly run the forked mode in MacOS (m1)?
Much appreciated in advance!