When seek timesout, node's vm crash with EXC_BAD_ACCESS
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- nodejs, typescript
- Ambito
- distributed-systems
Direzione di ricerca
Riproduci il timeout usando Consumer::SeekTimestamp, quindi traccia il callback attraverso seekAllAsync, seekAsyncInternal e ClientConnection::handleRequestTimeout nello stack. Determina dove il risultato del timeout raggiunge il callback nativo e verifica che lo stesso scenario venga completato senza un crash EXC_BAD_ACCESS.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
The following code will make it crash if it times out to seek to something in the past
const consumeSince = new Date(new Date() - 7 * 24 * 24 * 60 * 1000);
const consumer = await client.subscribe({
topic: fullTopicName,
subscription,
subscriptionType: 'Exclusive' as SubscriptionType,
subscriptionInitialPosition: 'Latest' as InitialPosition,
consumerName,
listener: async (message: Message, listenerConsumer: Consumer) => {}
});
await consumer.seekTimestamp(consumeSince.valueOf());
Will crash with the following:
Process 32926 stopped
* thread #24, stop reason = EXC_BAD_ACCESS (code=1, address=0x276)
frame #0: 0x000000011e096b04 pulsar.node`Consumer::SeekTimestamp(Napi::CallbackInfo const&)::$_10::__invoke(pulsar_result, void*) + 64
pulsar.node`Consumer::SeekTimestamp(Napi::CallbackInfo const&)::$_10::__invoke(pulsar_result, void*):
-> 0x11e096b04 <+64>: ldadd x9, x8, [x8]
0x11e096b08 <+68>: ldr x23, [x22, #0x8]
0x11e096b0c <+72>: cbz x23, 0x11e096b20 ; <+92>
0x11e096b10 <+76>: add x8, x23, #0x8
Target 0: (node) stopped.
(lldb) bt
* thread #24, stop reason = EXC_BAD_ACCESS (code=1, address=0x276)
* frame #0: 0x000000011e096b04 pulsar.node`Consumer::SeekTimestamp(Napi::CallbackInfo const&)::$_10::__invoke(pulsar_result, void*) + 64
frame #1: 0x000000011e20d6f8 pulsar.node`void pulsar::MultiTopicsConsumerImpl::seekAllAsync<unsigned long long>(unsigned long long const&, std::__1::function<void (pulsar::Result)>)::'lambda'(std::__1::shared_ptr<pulsar::ConsumerImpl> const&, pulsar::SharedFuture)::operator()(std::__1::shared_ptr<pulsar::ConsumerImpl> const&, pulsar::SharedFuture) const::'lambda'(pulsar::Result)::operator()(pulsar::Result) const + 164
frame #2: 0x000000011e1c3390 pulsar.node`std::__1::__function::__func<pulsar::ConsumerImpl::seekAsyncInternal(long, pulsar::SharedBuffer, boost::variant<unsigned long long, pulsar::MessageId> const&, std::__1::function<void (pulsar::Result)>)::$_18, std::__1::allocator<pulsar::ConsumerImpl::seekAsyncInternal(long, pulsar::SharedBuffer, boost::variant<unsigned long long, pulsar::MessageId> const&, std::__1::function<void (pulsar::Result)>)::$_18>, void (pulsar::Result, pulsar::ResponseData const&)>::operator()(pulsar::Result&&, pulsar::ResponseData const&) + 508
frame #3: 0x000000011e148fa4 pulsar.node`pulsar::InternalState<pulsar::Result, pulsar::ResponseData>::complete(pulsar::Result, pulsar::ResponseData const&) + 192
frame #4: 0x000000011e1050bc pulsar.node`pulsar::ClientConnection::handleRequestTimeout(std::__1::error_code const&, pulsar::ClientConnection::PendingRequestData) + 84
frame #5: 0x000000011e149718 pulsar.node`asio::detail::binder1<pulsar::ClientConnection::sendRequestWithId(pulsar::SharedBuffer, int)::$_18, std::__1::error_code>::operator()() + 144
frame #6: 0x000000011e149164 pulsar.node`asio::detail::wait_handler<pulsar::ClientConnection::sendRequestWithId(pulsar::SharedBuffer, int)::$_18, asio::any_io_executor>::do_complete(void*, asio::detail::scheduler_operation*, std::__1::error_code const&, unsigned long) + 280
frame #7: 0x000000011e122ebc pulsar.node`asio::detail::scheduler::do_run_one(asio::detail::conditionally_enabled_mutex::scoped_lock&, asio::detail::scheduler_thread_info&, std::__1::error_code const&) + 668
frame #8: 0x000000011e122ad0 pulsar.node`asio::detail::scheduler::run(std::__1::error_code&) + 268
frame #9: 0x000000011e1d124c pulsar.node`void* std::__1::__thread_proxy[abi:ue170006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, pulsar::ExecutorService::start()::$_0>>(void*) + 176
frame #10: 0x000000018f162c0c libsystem_pthread.dylib`_pthread_start + 136
- Lingua principale
- C++
- Stelle
- 164
- Fork
- 99
- Merge medio
- 5g 18h
- PR unite (30g)
- 2
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/pulsar-client-node
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
apache/pulsar-client-node#477 ·
-
公司网络无法访问海外站点,如何解决?Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
apache/pulsar-client-node#455 · 3 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
apache/pulsar-client-node#432 · 2 reazioni ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 38/100
apache/pulsar-client-node#431 · 3 commenti ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
apache/pulsar-client-node#429 · 1 commento ·
Tutte le issue di apache/pulsar-client-node
Issue simili
-
upstream update
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
conan-io/conan-center-index#31098 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
bug chart-audit
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
godotengine/godot#124120 ·
I maintainer di solito rispondono entro 1 giorno