From ca46fc248e8e21e2b67bbb3b3d4380ac14b3f539 Mon Sep 17 00:00:00 2001 From: Yunze Xu Date: Tue, 14 Jun 2022 13:47:49 +0800 Subject: [PATCH 1/2] Add null check for consumer in MessageListenerProxy --- src/Consumer.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Consumer.cc b/src/Consumer.cc index 277074dc..97ca539e 100644 --- a/src/Consumer.cc +++ b/src/Consumer.cc @@ -63,7 +63,9 @@ void MessageListenerProxy(Napi::Env env, Napi::Function jsCallback, MessageListe Consumer *consumer = data->consumer; delete data; - jsCallback.Call({msg, consumer->Value()}); + if (consumer) { + jsCallback.Call({msg, consumer->Value()}); + } } void MessageListener(pulsar_consumer_t *rawConsumer, pulsar_message_t *rawMessage, void *ctx) { From 4c2f468ffab62e78c99f4c9c3f7a5429a7041880 Mon Sep 17 00:00:00 2001 From: Yunze Xu Date: Fri, 8 Jul 2022 10:44:28 +0800 Subject: [PATCH 2/2] Add comments for the workround --- src/Consumer.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Consumer.cc b/src/Consumer.cc index 97ca539e..24ca11e3 100644 --- a/src/Consumer.cc +++ b/src/Consumer.cc @@ -63,6 +63,8 @@ void MessageListenerProxy(Napi::Env env, Napi::Function jsCallback, MessageListe Consumer *consumer = data->consumer; delete data; + // `consumer` might be null in certain cases, segmentation fault might happend without this null check. We + // need to handle this rare case in future. if (consumer) { jsCallback.Call({msg, consumer->Value()}); }