Plex consuming a full core at idle, libcppnetlib-uri.so (boost) implicated

Server Version#: 1.15.1.710

like others, I’ve noticed that Plex started consuming a full core at idle. i have some information, but unfortunately, gathering full call stacks is impossible as the binary is stripped - I’m posting this in the hopes that a plex developer can provide symbols for the stripped binary and I can provide full call stacks.

running perf top --sort comm,dso,sym

Overhead Command Shared Object Symbol
30.15% Plex Media Serv libcppnetlib-uri.so [.] _ZNK5boost6spirit2qi4ruleIN9__gnu_cxx17__normal_iteratorIPKcSsEEFSsvENS0_11unused_typeES9_S9_E5parseINS0_7contextINS_6fusion4consIRSsNSD_4nil_EEENSD_7vecto
21.38% Plex Media Serv libcppnetlib-uri.so [.] _ZNK5boost6spirit2qi13repeat_parserINS1_10char_classINS0_3tag9char_codeINS4_6xdigitENS0_13char_encoding8standardEEEEENS1_15finite_iteratorIiEEE15parse_cont
13.55% Plex Media Serv libcppnetlib-uri.so [.] _ZN5boost6detail8function21function_obj_invoker4INS_6spirit2qi6detail13parser_binderINS4_13repeat_parserINS4_10char_classINS3_3tag9char_codeINS9_6xdigitENS
8.97% Plex Media Serv libcppnetlib-uri.so [.] _ZNK5boost6spirit2qi4plusINS1_6kleeneINS1_8sequenceINS_6fusion4consINS1_9referenceIKNS1_4ruleIN9__gnu_cxx17__normal_iteratorIPKcSsEEFSsvENS0_11unused_typeE
5.86% Plex Media Serv libc-2.23.so [.] isxdigit
4.85% Plex Media Serv libstdc++.so.6 [.] ZNSs4_Rep7_M_grabERKSaIcES2
2.50% Plex Media Serv libstdc++.so.6 [.] _ZNSsC2ERKSs
2.24% Plex Media Serv libcppnetlib-uri.so [.] _ZNK5boost6spirit2qi4ruleIN9__gnu_cxx17__normal_iteratorIPKcSsEEFSsvENS0_11unused_typeES9_S9_E5parseINS0_7contextINS_6fusion4consIRSsNSD_4nil_EEENSD_7vecto
1.59% Plex Media Serv libstdc++.so.6 [.] _ZNSs4_Rep10_M_refcopyEv@plt
1.55% Plex Media Serv libcppnetlib-uri.so [.] _ZNSsC1ERKSs@plt
1.44% Plex Media Serv libstdc++.so.6 [.] ZNSs4_Rep7_M_grabERKSaIcES2@plt
1.25% Plex Media Serv libstdc++.so.6 [.] _ZNSs4_Rep10_M_refcopyEv
0.81% Plex Media Serv libstdc++.so.6 [.] _ZNKSs4_Rep12_M_is_leakedEv@plt
0.47% Plex Media Serv libstdc++.so.6 [.] _ZNKSs4_Rep12_M_is_leakedEv
drilling into the top cpu user shows that all the time is being spent here:

$ c++filt ZNK5boost6spirit2qi4ruleIN9__gnu_cxx17__normal_iteratorIPKcSsEEFSsvENS0_11unused_typeES9_S9_E5parseINS0_7contextINS_6fusion4consIRSsNSD_4nil_EEENSD_7vector0IvEEEES9_KS9_EEbRS7_RKS7_RT_RKT0_RT1
bool boost::spirit::qi::rule<__gnu_cxx::_normal_iterator<char const*, std::basic_string<char, std::char_traits, std::allocator > >, std::basic_string<char, std::char_traits, std::allocator > (), boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type>::parse<boost::spirit::context<boost::fusion::cons<std::basic_string<char, std::char_traits, std::allocator >&, boost::fusion::nil>, boost::fusion::vector0 >, boost::spirit::unused_type, boost::spirit::unused_type const>(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits, std::allocator > >&, __gnu_cxx::_normal_iterator<char const*, std::basic_string<char, std::char_traits, std::allocator > > const&, boost::spirit::context<boost::fusion::cons<std::basic_string<char, std::char_traits, std::allocator >&, boost::fusion::nil>, boost::fusion::vector0 >&, boost::spirit::unused_type const&, boost::spirit::unused_type const&) const

1 Like

Can you supply the DEBUG logs as well please for Engineering?

The stack dump & logs will let them see

I’m probably missing something obvious, but I don’t see a way to direct message you or otherwise provide logs to you/engineering.

I can immediately reproduce this on bare metal linux, I have debug log and dump file, but I can’t respond to the DM as you closed the topic due. Please open a new one and I’ll provide data.

28.59% libcppnetlib-uri.so [.] _ZNK5boost6spirit2qi4ruleIN9__gnu_cxx17__normal_iteratorIPKcSsEEFSsvENS0_11unused_typeES9_S9_E5parseINS0_7co
20.36% libcppnetlib-uri.so [.] _ZNK5boost6spirit2qi13repeat_parserINS1_10char_classINS0_3tag9char_codeINS4_6xdigitENS0_13char_encoding8stan
13.23% libcppnetlib-uri.so [.] _ZN5boost6detail8function21function_obj_invoker4INS_6spirit2qi6detail13parser_binderINS4_13repeat_parserINS4
8.60% libcppnetlib-uri.so [.] ZNK5boost6spirit2qi4plusINS1_6kleeneINS1_8sequenceINS_6fusion4consINS1_9referenceIKNS1_4ruleIN9__gnu_cxx17
5.75% libc-2.27.so [.] isxdigit

Thanks. Not needed. Engineering has all it needs. Please do hang on to the data for now

Great. I look forward to a fix (and a quieter fan). Cheers.

There have been multiple releases, but no improvement. If I can get symbols for the binary I can debug the issue further.

Sorry, forgot to update this thread. I’ve been working in the other thread.

I submitted that to Engineering.

Collected enough data to show what’s happening.

I found the other thread (implicating UPnP) by looking at your recent activity - since I have manual remote access configured, and plex is the only thing running on this host, the workaround for me was:

iptables -A INPUT -p udp --source-port 1900 -j DROP

and restarting plex

cpu is hovering at 1% (vs >=100%)

Thank you… I will add this to the trouble ticket

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.