empiredan opened a new issue, #1817:
URL: https://github.com/apache/incubator-pegasus/issues/1817
It is found that after sending http request "/meta/cluster" to any standby
meta server (for example, to sending request to a local meta server with port
34601, the command would be `curl -v 127.0.0.1:34601/meta/cluster`), it would
exits abnormally with core dump. Running gdb over the core dump file would
output following messages:
```
root@d04a6b37202f:/data/code/incubator-pegasus/onebox/meta1# gdb
/data/code/incubator-pegasus/onebox/meta1/pegasus_server 'core.1703160155.
meta.default.4.149'
Core was generated by
`/data/code/incubator-pegasus/onebox/meta1/pegasus_server config.ini -app_list
m'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f686b5fb653 in
dsn::replication::meta_http_service::get_cluster_info_handler
(this=0x55da218de340, req=..., resp=...) at
/data/code/incubator-pegasus/src/meta/meta_http_service.cpp:487
487
_service->_balancer->get_balance_operation_count(balance_operation_type));
[Current thread is 1 (Thread 0x7f685f73a640 (LWP 423))]
Installing openjdk unwinder
Traceback (most recent call last):
File
"/usr/share/gdb/auto-load/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so-gdb.py",
line 52, in <module>
class Types(object):
File
"/usr/share/gdb/auto-load/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so-gdb.py",
line 66, in Types
nmethodp_t = gdb.lookup_type('nmethod').pointer()
gdb.error: No type named nmethod.
(gdb) bt
#0 0x00007f686b5fb653 in
dsn::replication::meta_http_service::get_cluster_info_handler
(this=0x55da218de340, req=..., resp=...) at
/data/code/incubator-pegasus/src/meta/meta_http_service.cpp:487
#1 0x00007f686c1a89c7 in std::function<void (dsn::http_request const&,
dsn::http_response&)>::operator()(dsn::http_request const&,
dsn::http_response&) const (__args#1=..., __args#0=..., this=0x55da21f73660) at
/usr/include/c++/11/bits/std_function.h:590
#2 dsn::http_server::serve (this=<optimized out>, msg=0x55da220648f0) at
/data/code/incubator-pegasus/src/http/http_server.cpp:152
#3 0x00007f686c205d6b in std::function<void
(dsn::message_ex*)>::operator()(dsn::message_ex*) const (__args#0=<optimized
out>, this=0x55da219387d0) at /usr/include/c++/11/bits/std_function.h:586
#4 dsn::rpc_request_task::exec (this=0x55da21938700) at
/data/code/incubator-pegasus/src/runtime/task/task.h:435
#5 0x00007f686c2083cf in dsn::task::exec_internal (this=0x55da21938700) at
/data/code/incubator-pegasus/src/runtime/task/task.cpp:173
#6 0x00007f686c22285a in dsn::task_worker::loop (this=0x55da21f44f00) at
/data/code/incubator-pegasus/src/runtime/task/task_worker.cpp:245
#7 0x00007f686a031253 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#8 0x00007f6869cbaac3 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#9 0x00007f6869d4bbf4 in clone () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) f 1
#1 0x00007f686c1a89c7 in std::function<void (dsn::http_request const&,
dsn::http_response&)>::operator()(dsn::http_request const&,
dsn::http_response&) const (__args#1=..., __args#0=..., this=0x55da21f73660) at
/usr/include/c++/11/bits/std_function.h:590
590 return _M_invoker(_M_functor,
std::forward<_ArgTypes>(__args)...);
(gdb) f 0
#0 0x00007f686b5fb653 in
dsn::replication::meta_http_service::get_cluster_info_handler
(this=0x55da218de340, req=..., resp=...) at
/data/code/incubator-pegasus/src/meta/meta_http_service.cpp:487
487
_service->_balancer->get_balance_operation_count(balance_operation_type));
(gdb) list
482
_meta_function_level_VALUES_TO_NAMES.find(_service->get_function_level())->second
+ 3);
483 std::vector<std::string> balance_operation_type;
484 balance_operation_type.emplace_back("detail");
485 tp.add_row_name_and_data(
486 "balance_operation_count",
487
_service->_balancer->get_balance_operation_count(balance_operation_type));
488 double primary_stddev, total_stddev;
489 _service->_state->get_cluster_balance_score(primary_stddev,
total_stddev);
490 tp.add_row_name_and_data("primary_replica_count_stddev",
primary_stddev);
491 tp.add_row_name_and_data("total_replica_count_stddev",
total_stddev);
(gdb) p _service
$1 = (dsn::replication::meta_service *) 0x55da21aaa000
(gdb) p _service->_balancer
$2 = std::shared_ptr<dsn::replication::server_load_balancer> (empty) =
{get() = 0x0}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]