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]

Reply via email to