Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

进程异常abort #647

Closed
lorinlee opened this issue Feb 12, 2019 · 2 comments
Closed

进程异常abort #647

lorinlee opened this issue Feb 12, 2019 · 2 comments

Comments

@lorinlee
Copy link
Contributor

Describe the bug (描述bug)
偶尔会进程abort,有core现场

To Reproduce (复现方法)
未知

Expected behavior (期望行为)
进程不退出

Versions (各种版本)
OS: Linux 4.9.0
Compiler: gcc4.9.2
brpc: commit log 74abadb
protobuf: 3.5.1

Additional context/screenshots (更多上下文/截图)

#0 0x00007f1b7b60a067 in raise () from libc.so.6
#1 0x00007f1b7b60b448 in abort () from libc.so.6
#2 0x00007f1b7f044eb9 in google::DumpStackTraceAndExit () at src/utilities.cc:147
#3 0x00007f1b7f03bc0d in google::LogMessage::Fail () at src/logging.cc:1458
#4 0x00007f1b7f03e3f3 in google::LogMessageFatal::~LogMessageFatal (this=0x7f1b3d1feda0, __in_chrg=) at src/logging.cc:1985
#5 0x00007f1b7f607d24 in release_tls_block_chain (b=) at src/butil/iobuf.cpp:433
#6 butil::IOPortal::return_cached_blocks_impl (b=0x7f1a28fea000) at src/butil/iobuf.cpp:1808
#7 0x00007f1b7f70bde6 in return_cached_blocks (this=0x7f1aa2092390) at ./src/butil/iobuf_inl.h:43
#8 brpc::InputMessenger::OnNewMessages (m=0x7f1aa20922c0) at src/brpc/input_messenger.cpp:264
#9 0x00007f1b7f6e3bad in brpc::Socket::ProcessEvent (arg=0x7f1aa20922c0) at src/brpc/socket.cpp:1061
#10 0x00007f1b7f652651 in bthread::TaskGroup::task_runner (skip_remained=) at src/bthread/task_group.cpp:293
#11 0x00007f1b7f6425b1 in bthread_make_fcontext () from libbrpc.so
#12 0x0000000000000000 in ?? ()

@choleraehyq
Copy link
Contributor

补充一下,使用的协议是 thrift,这个不知道有没有关系

@lorinlee
Copy link
Contributor Author

#648 猜测了一种可能性并尝试了fix,在acquire tls block的时候可能会拿到一个full的block,比如使用IOBuf::append将当前tls的头部block写满了,然后有bthread release了一个block,后面append再次将这个block写满,tls会有两个full的block,按当前的实现acquire的时候会拿到一个full的block,在release的时候会abort,辛苦review @jamesge

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants