Skip to content

Commit 0ce05a3

Browse files
authored
fix fiber segfault (#595)
1 parent d25ba30 commit 0ce05a3

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
- [Enhancement] Allow native Kafka customization poll time.
77
- [Enhancement] Roll out experimental jruby support.
88
- [Fix] Fix issue where post-closed producer C topics refs would not be cleaned.
9+
- [Fix] Fiber causes Segmentation Fault.
910

1011
## 0.21.0 (2025-02-13)
1112
- [Enhancement] Bump librdkafka to `2.8.0`

lib/rdkafka/native_kafka.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ def close(object_id=nil)
131131
Rdkafka::Bindings.rd_kafka_destroy(@inner)
132132
@inner = nil
133133
@opaque = nil
134+
@poll_mutex.unlock
135+
@poll_mutex = nil
134136
end
135137
end
136138
end

spec/rdkafka/producer_spec.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -973,4 +973,19 @@ def call(_, handle)
973973
end
974974
end
975975
end
976+
977+
describe 'with other fiber closing' do
978+
context 'when we create many fibers and close producer in some of them' do
979+
it 'expect not to crash ruby' do
980+
10.times do |i|
981+
producer = rdkafka_producer_config.producer
982+
983+
Fiber.new do
984+
GC.start
985+
producer.close
986+
end.resume
987+
end
988+
end
989+
end
990+
end
976991
end

0 commit comments

Comments
 (0)