envoyproxy / envoyproxy/envoy-mobile
crash: android sometimes crashes on encodeData
- Dominant language
- Java
- Stars
- 566
- Forks
- 85
- PR merge metrics
- No merged PRs in 30d
Description
Stacktrace:
```
SIGABRT: Abort program
at abort(/apex/com.android.runtime/lib64/bionic/libc.so:532896)
at Envoy::Http::Dispatcher::DirectStreamCallbacks::encodeData(Envoy::Buffer::Instance&, bool)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:13758768)
at Envoy::Http::ConnectionManagerImpl::ActiveStream::encodeDataInternal(Envoy::Buffer::Instance&, bool)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:17168052)
at Envoy::Http::ConnectionManagerImpl::ActiveStream::encodeData(Envoy::Http::ConnectionManagerImpl::ActiveStreamEncoderFilter*, Envoy::Buffer::Instance&, bool, Envoy::Http::ConnectionManagerImpl::ActiveStream::FilterIterationStartState)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:17167520)
at Envoy::Router::Filter::onUpstreamData(Envoy::Buffer::Instance&, Envoy::Router::Filter::UpstreamRequest&, bool)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:16675104)
at Envoy::Router::Filter::UpstreamRequest::decodeData(Envoy::Buffer::Instance&, bool)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:16682796)
at Envoy::Http::ResponseDecoderWrapper::decodeData(Envoy::Buffer::Instance&, bool)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:16002928)
at Envoy::Http::ResponseDecoderWrapper::decodeData(Envoy::Buffer::Instance&, bool)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:16002928)
at Envoy::Http::Http1::ClientConnectionImpl::onBody(char const*, unsigned long)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:17244812)
at 0x71e9200fe8(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:17248232)
at http_parser_execute(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:18367240)
at Envoy::Http::Http1::ConnectionImpl::dispatchSlice(char const*, unsigned long)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:17228344)
at Envoy::Http::Http1::ConnectionImpl::dispatch(Envoy::Buffer::Instance&)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:17227784)
at Envoy::Http::CodecClient::onData(Envoy::Buffer::Instance&)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:16536528)
at Envoy::Http::CodecClient::CodecReadFilter::onData(Envoy::Buffer::Instance&, bool)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:16541128)
at Envoy::Network::FilterManagerImpl::onContinueReading(Envoy::Network::FilterManagerImpl::ActiveReadFilter*, Envoy::Network::ReadBufferSource&)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:15367832)
at Envoy::Network::FilterManagerImpl::onRead()(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:15367924)
at Envoy::Network::ConnectionImpl::onRead(unsigned long)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:15338688)
at Envoy::Network::ConnectionImpl::onReadReady()(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:15346816)
at Envoy::Network::ConnectionImpl::onFileEvent(unsigned int)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:15343372)
at 0x71e902a5e0(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:15320544)
at 0x71e9308000(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:18325504)
at event_base_loop(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:18308220)
at Envoy::Server::InstanceImpl::run()(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:14748876)
at Envoy::MainCommonBase::run()(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:13933508)
at Envoy::Engine::run(std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:13677788)
at void* std::__ndk1::__thread_proxy >, envoy_status_t (Envoy::Engine::*)(std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >), Envoy::Engine*, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > >(void*)(/data/app/me.lyft.android.beta-3NiooB0ysbPFLcHqdLb44w==/lib/arm64/libenvoy_jni.so:13751176)
at 0x7322770368(/apex/com.android.runtime/lib64/bionic/libc.so:926568)
at 0x7322711d9c(/apex/com.android.runtime/lib64/bionic/libc.so:540060)
at 0x0(unknown)
```
The stack trace is not always exactly the same. However, it is similar enough and always crashes in ` Envoy::Http::Dispatcher::DirectStreamCallbacks::encodeData`. We have not seen an issue like this in iOS so it, at first glance, makes me think that there is something funky going on with buffers in the jni layer. I also have observed that while it is a rare crash across users, once a user experiences this crash it seems to happen more often.
@goaway I think you and @buildbreaker could have fun investigating this one.
Contributor guide
Assessment
This issue has not been assessed yet.