-
Notifications
You must be signed in to change notification settings - Fork 726
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
Translate '/android/lib/src/main/res/values/strings.xml' in 'uk' #38
Closed
transifex-integration
wants to merge
1
commit into
master
from
translations_android-lib-src-main-res-values-strings-xml--master_uk
Closed
Translate '/android/lib/src/main/res/values/strings.xml' in 'uk' #38
transifex-integration
wants to merge
1
commit into
master
from
translations_android-lib-src-main-res-values-strings-xml--master_uk
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
translation completed for the source file '/android/lib/src/main/res/values/strings.xml' on the 'uk' language.
No value, translation is already 100% in repo. |
timar
deleted the
translations_android-lib-src-main-res-values-strings-xml--master_uk
branch
October 1, 2020 12:21
caolanm
added a commit
that referenced
this pull request
Sep 26, 2024
at least one case of a crash in std::erase_if here. #1 0x00007f9d9b8d17f1 in __GI_abort () at abort.c:79 #2 0x00000000005af591 in Poco::SignalHandler::handleSignal(int) [clone .cold] () at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/allocator.h:174 #3 <signal handler called> #4 0x0000000000803115 in __gnu_cxx::__exchange_and_add (__val=-1, __mem=0x11) at /opt/rh/devtoolset-12/root/usr/include/c++/12/ext/atomicity.h:101 #5 __gnu_cxx::__exchange_and_add_dispatch (__val=-1, __mem=0x11) at /opt/rh/devtoolset-12/root/usr/include/c++/12/ext/atomicity.h:101 #6 std::string::_Rep::_M_dispose (__a=..., this=0x1) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/cow_string.h:288 #7 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string (this=0x7f9d7416a5c0, __in_chrg=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/cow_string.h:718 #8 std::destroy_at<std::string> (__location=0x7f9d7416a5c0) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:88 #9 std::_Destroy<std::string> (__pointer=0x7f9d7416a5c0) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:149 #10 std::_Destroy_aux<false>::__destroy<std::string*> (__last=0x7f9d7416a5d8, __first=0x7f9d7416a5c0) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:163 #11 std::_Destroy<std::string*> (__last=0x7f9d7416a5d8, __first=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:196 #12 std::_Destroy<std::string*, std::string> (__last=0x7f9d7416a5d8, __first=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/alloc_traits.h:850 #13 std::vector<std::string, std::allocator<std::string> >::~vector (this=0x7f9d7c0fb9c8, __in_chrg=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:730 #14 net::HostEntry::~HostEntry (this=0x7f9d7c0fb9b8, __in_chrg=<optimized out>) at net/NetUtil.cpp:127 #15 0x00000000008083e9 in net::DNSCacheEntry::~DNSCacheEntry (this=0x7f9d7c0fb9a8, __in_chrg=<optimized out>) at net/NetUtil.cpp:129 #16 std::destroy_at<net::DNSCacheEntry> (__location=0x7f9d7c0fb9a8) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:88 #17 std::_Destroy<net::DNSCacheEntry> (__pointer=0x7f9d7c0fb9a8) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:149 #18 std::_Destroy_aux<false>::__destroy<net::DNSCacheEntry*> (__last=<optimized out>, __first=0x7f9d7c0fb9a8) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:163 #19 std::_Destroy<net::DNSCacheEntry*> (__last=<optimized out>, __first=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:196 #20 std::_Destroy<net::DNSCacheEntry*, net::DNSCacheEntry> (__last=<optimized out>, __first=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/alloc_traits.h:850 #21 std::vector<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry> >::_M_erase_at_end (__pos=<optimized out>, this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1932 #22 std::vector<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry> >::_M_erase (__last=..., __first= {queryAddress = "some.address.or.other", queryPort = "", hostEntry = {_requestName = "some.address.or.other", _canonicalName = "", _ipAddresses = std::vector of length 3, capacity 3 = {<error reading variable: Cannot access memory at address 0x1>, <error reading variable: Cannot access memory at address 0x1>, <error reading variable: Cannot access memory at address 0xffffffffffffffe8>}, _ainfo = std::shared_ptr<addrinfo> (use count 276, weak count -1) = {get() = 0x7f9d741ffd70}, _errno = 0, _eaino = 0}, lookupTime = {__d = {__r = 1035924226793350}}}, this=0xef16a0 <net::resolveDNS(std::string const&)::resolver>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/vector.tcc:196 #23 std::vector<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry> >::erase (__last=..., __first=..., this=0xef16a0 <net::resolveDNS(std::string const&)::resolver>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1561 #24 std::erase_if<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry>, net::resolveDNS(const std::string&, const std::string&, std::vector<DNSCacheEntry>&)::<lambda(const auto:20&)> > ( __pred=..., __cont=std::vector of length 2, capacity 8 = {...}) at /opt/rh/devtoolset-12/root/usr/include/c++/12/vector:117 #25 net::resolveDNS(std::string const&, std::string const&, std::vector<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry> >&) () at net/NetUtil.cpp:144 #26 0x0000000000808f96 in net::DNSResolver::resolveDNS (port="", addressToCheck="some.address.or.other", this=0xef16a0 <net::resolveDNS(std::string const&)::resolver>) at net/NetUtil.cpp:171 #27 net::resolveDNS(std::string const&) () at net/NetUtil.cpp:178 #28 0x000000000080921a in net::resolveOneAddress(std::string const&) () at net/NetUtil.cpp:194 #29 0x00000000008092e3 in net::resolveHostAddress(std::string const&) () at net/NetUtil.cpp:205 #30 0x0000000000809354 in net::isLocalhost(std::string const&) () at net/NetUtil.cpp:227 #31 0x0000000000811887 in SslStreamSocket::verifyCertificate() () at net/Socket.hpp:995 #32 0x000000000082447b in SslStreamSocket::doHandshake (this=this@entry=0x7f9d7c18d0a0) at ./net/SslSocket.hpp:266 #33 0x000000000082471b in SslStreamSocket::readIncomingData (this=0x7f9d7c18d0a0) at ./net/SslSocket.hpp:140 #34 0x000000000081e02c in StreamSocket::handlePoll (this=0x7f9d7c18d0a0, disposition=..., now=..., events=1) at net/Socket.hpp:1348 #35 0x0000000000816082 in SocketPoll::poll(long) () at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1123 #36 0x0000000000652250 in SocketPoll::poll (timeoutMax=..., this=<optimized out>) at ./net/Socket.hpp:689 #37 DocumentBroker::pollThread() () at wsd/DocumentBroker.cpp:372 #38 0x00000000008171a5 in SocketPoll::pollingThreadEntry() () at net/Socket.cpp:390 #39 0x0000000000be1c83 in execute_native_thread_routine () #40 0x00007f9d9bc896db in start_thread (arg=0x7f9d527fc700) at pthread_create.c:463 #41 0x00007f9d9b9b274f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com> Change-Id: Ie0d9e547dc9b4803ea95848c76302601a996c53a
vmiklos
pushed a commit
that referenced
this pull request
Sep 27, 2024
at least one case of a crash in std::erase_if here. #1 0x00007f9d9b8d17f1 in __GI_abort () at abort.c:79 #2 0x00000000005af591 in Poco::SignalHandler::handleSignal(int) [clone .cold] () at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/allocator.h:174 #3 <signal handler called> #4 0x0000000000803115 in __gnu_cxx::__exchange_and_add (__val=-1, __mem=0x11) at /opt/rh/devtoolset-12/root/usr/include/c++/12/ext/atomicity.h:101 #5 __gnu_cxx::__exchange_and_add_dispatch (__val=-1, __mem=0x11) at /opt/rh/devtoolset-12/root/usr/include/c++/12/ext/atomicity.h:101 #6 std::string::_Rep::_M_dispose (__a=..., this=0x1) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/cow_string.h:288 #7 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string (this=0x7f9d7416a5c0, __in_chrg=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/cow_string.h:718 #8 std::destroy_at<std::string> (__location=0x7f9d7416a5c0) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:88 #9 std::_Destroy<std::string> (__pointer=0x7f9d7416a5c0) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:149 #10 std::_Destroy_aux<false>::__destroy<std::string*> (__last=0x7f9d7416a5d8, __first=0x7f9d7416a5c0) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:163 #11 std::_Destroy<std::string*> (__last=0x7f9d7416a5d8, __first=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:196 #12 std::_Destroy<std::string*, std::string> (__last=0x7f9d7416a5d8, __first=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/alloc_traits.h:850 #13 std::vector<std::string, std::allocator<std::string> >::~vector (this=0x7f9d7c0fb9c8, __in_chrg=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:730 #14 net::HostEntry::~HostEntry (this=0x7f9d7c0fb9b8, __in_chrg=<optimized out>) at net/NetUtil.cpp:127 #15 0x00000000008083e9 in net::DNSCacheEntry::~DNSCacheEntry (this=0x7f9d7c0fb9a8, __in_chrg=<optimized out>) at net/NetUtil.cpp:129 #16 std::destroy_at<net::DNSCacheEntry> (__location=0x7f9d7c0fb9a8) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:88 #17 std::_Destroy<net::DNSCacheEntry> (__pointer=0x7f9d7c0fb9a8) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:149 #18 std::_Destroy_aux<false>::__destroy<net::DNSCacheEntry*> (__last=<optimized out>, __first=0x7f9d7c0fb9a8) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:163 #19 std::_Destroy<net::DNSCacheEntry*> (__last=<optimized out>, __first=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:196 #20 std::_Destroy<net::DNSCacheEntry*, net::DNSCacheEntry> (__last=<optimized out>, __first=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/alloc_traits.h:850 #21 std::vector<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry> >::_M_erase_at_end (__pos=<optimized out>, this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1932 #22 std::vector<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry> >::_M_erase (__last=..., __first= {queryAddress = "some.address.or.other", queryPort = "", hostEntry = {_requestName = "some.address.or.other", _canonicalName = "", _ipAddresses = std::vector of length 3, capacity 3 = {<error reading variable: Cannot access memory at address 0x1>, <error reading variable: Cannot access memory at address 0x1>, <error reading variable: Cannot access memory at address 0xffffffffffffffe8>}, _ainfo = std::shared_ptr<addrinfo> (use count 276, weak count -1) = {get() = 0x7f9d741ffd70}, _errno = 0, _eaino = 0}, lookupTime = {__d = {__r = 1035924226793350}}}, this=0xef16a0 <net::resolveDNS(std::string const&)::resolver>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/vector.tcc:196 #23 std::vector<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry> >::erase (__last=..., __first=..., this=0xef16a0 <net::resolveDNS(std::string const&)::resolver>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1561 #24 std::erase_if<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry>, net::resolveDNS(const std::string&, const std::string&, std::vector<DNSCacheEntry>&)::<lambda(const auto:20&)> > ( __pred=..., __cont=std::vector of length 2, capacity 8 = {...}) at /opt/rh/devtoolset-12/root/usr/include/c++/12/vector:117 #25 net::resolveDNS(std::string const&, std::string const&, std::vector<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry> >&) () at net/NetUtil.cpp:144 #26 0x0000000000808f96 in net::DNSResolver::resolveDNS (port="", addressToCheck="some.address.or.other", this=0xef16a0 <net::resolveDNS(std::string const&)::resolver>) at net/NetUtil.cpp:171 #27 net::resolveDNS(std::string const&) () at net/NetUtil.cpp:178 #28 0x000000000080921a in net::resolveOneAddress(std::string const&) () at net/NetUtil.cpp:194 #29 0x00000000008092e3 in net::resolveHostAddress(std::string const&) () at net/NetUtil.cpp:205 #30 0x0000000000809354 in net::isLocalhost(std::string const&) () at net/NetUtil.cpp:227 #31 0x0000000000811887 in SslStreamSocket::verifyCertificate() () at net/Socket.hpp:995 #32 0x000000000082447b in SslStreamSocket::doHandshake (this=this@entry=0x7f9d7c18d0a0) at ./net/SslSocket.hpp:266 #33 0x000000000082471b in SslStreamSocket::readIncomingData (this=0x7f9d7c18d0a0) at ./net/SslSocket.hpp:140 #34 0x000000000081e02c in StreamSocket::handlePoll (this=0x7f9d7c18d0a0, disposition=..., now=..., events=1) at net/Socket.hpp:1348 #35 0x0000000000816082 in SocketPoll::poll(long) () at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1123 #36 0x0000000000652250 in SocketPoll::poll (timeoutMax=..., this=<optimized out>) at ./net/Socket.hpp:689 #37 DocumentBroker::pollThread() () at wsd/DocumentBroker.cpp:372 #38 0x00000000008171a5 in SocketPoll::pollingThreadEntry() () at net/Socket.cpp:390 #39 0x0000000000be1c83 in execute_native_thread_routine () #40 0x00007f9d9bc896db in start_thread (arg=0x7f9d527fc700) at pthread_create.c:463 #41 0x00007f9d9b9b274f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com> Change-Id: Ie0d9e547dc9b4803ea95848c76302601a996c53a
timar
pushed a commit
that referenced
this pull request
Sep 29, 2024
at least one case of a crash in std::erase_if here. #1 0x00007f9d9b8d17f1 in __GI_abort () at abort.c:79 #2 0x00000000005af591 in Poco::SignalHandler::handleSignal(int) [clone .cold] () at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/allocator.h:174 #3 <signal handler called> #4 0x0000000000803115 in __gnu_cxx::__exchange_and_add (__val=-1, __mem=0x11) at /opt/rh/devtoolset-12/root/usr/include/c++/12/ext/atomicity.h:101 #5 __gnu_cxx::__exchange_and_add_dispatch (__val=-1, __mem=0x11) at /opt/rh/devtoolset-12/root/usr/include/c++/12/ext/atomicity.h:101 #6 std::string::_Rep::_M_dispose (__a=..., this=0x1) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/cow_string.h:288 #7 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string (this=0x7f9d7416a5c0, __in_chrg=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/cow_string.h:718 #8 std::destroy_at<std::string> (__location=0x7f9d7416a5c0) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:88 #9 std::_Destroy<std::string> (__pointer=0x7f9d7416a5c0) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:149 #10 std::_Destroy_aux<false>::__destroy<std::string*> (__last=0x7f9d7416a5d8, __first=0x7f9d7416a5c0) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:163 #11 std::_Destroy<std::string*> (__last=0x7f9d7416a5d8, __first=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:196 #12 std::_Destroy<std::string*, std::string> (__last=0x7f9d7416a5d8, __first=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/alloc_traits.h:850 #13 std::vector<std::string, std::allocator<std::string> >::~vector (this=0x7f9d7c0fb9c8, __in_chrg=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:730 #14 net::HostEntry::~HostEntry (this=0x7f9d7c0fb9b8, __in_chrg=<optimized out>) at net/NetUtil.cpp:127 #15 0x00000000008083e9 in net::DNSCacheEntry::~DNSCacheEntry (this=0x7f9d7c0fb9a8, __in_chrg=<optimized out>) at net/NetUtil.cpp:129 #16 std::destroy_at<net::DNSCacheEntry> (__location=0x7f9d7c0fb9a8) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:88 #17 std::_Destroy<net::DNSCacheEntry> (__pointer=0x7f9d7c0fb9a8) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:149 #18 std::_Destroy_aux<false>::__destroy<net::DNSCacheEntry*> (__last=<optimized out>, __first=0x7f9d7c0fb9a8) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:163 #19 std::_Destroy<net::DNSCacheEntry*> (__last=<optimized out>, __first=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_construct.h:196 #20 std::_Destroy<net::DNSCacheEntry*, net::DNSCacheEntry> (__last=<optimized out>, __first=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/alloc_traits.h:850 #21 std::vector<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry> >::_M_erase_at_end (__pos=<optimized out>, this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1932 #22 std::vector<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry> >::_M_erase (__last=..., __first= {queryAddress = "some.address.or.other", queryPort = "", hostEntry = {_requestName = "some.address.or.other", _canonicalName = "", _ipAddresses = std::vector of length 3, capacity 3 = {<error reading variable: Cannot access memory at address 0x1>, <error reading variable: Cannot access memory at address 0x1>, <error reading variable: Cannot access memory at address 0xffffffffffffffe8>}, _ainfo = std::shared_ptr<addrinfo> (use count 276, weak count -1) = {get() = 0x7f9d741ffd70}, _errno = 0, _eaino = 0}, lookupTime = {__d = {__r = 1035924226793350}}}, this=0xef16a0 <net::resolveDNS(std::string const&)::resolver>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/vector.tcc:196 #23 std::vector<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry> >::erase (__last=..., __first=..., this=0xef16a0 <net::resolveDNS(std::string const&)::resolver>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1561 #24 std::erase_if<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry>, net::resolveDNS(const std::string&, const std::string&, std::vector<DNSCacheEntry>&)::<lambda(const auto:20&)> > ( __pred=..., __cont=std::vector of length 2, capacity 8 = {...}) at /opt/rh/devtoolset-12/root/usr/include/c++/12/vector:117 #25 net::resolveDNS(std::string const&, std::string const&, std::vector<net::DNSCacheEntry, std::allocator<net::DNSCacheEntry> >&) () at net/NetUtil.cpp:144 #26 0x0000000000808f96 in net::DNSResolver::resolveDNS (port="", addressToCheck="some.address.or.other", this=0xef16a0 <net::resolveDNS(std::string const&)::resolver>) at net/NetUtil.cpp:171 #27 net::resolveDNS(std::string const&) () at net/NetUtil.cpp:178 #28 0x000000000080921a in net::resolveOneAddress(std::string const&) () at net/NetUtil.cpp:194 #29 0x00000000008092e3 in net::resolveHostAddress(std::string const&) () at net/NetUtil.cpp:205 #30 0x0000000000809354 in net::isLocalhost(std::string const&) () at net/NetUtil.cpp:227 #31 0x0000000000811887 in SslStreamSocket::verifyCertificate() () at net/Socket.hpp:995 #32 0x000000000082447b in SslStreamSocket::doHandshake (this=this@entry=0x7f9d7c18d0a0) at ./net/SslSocket.hpp:266 #33 0x000000000082471b in SslStreamSocket::readIncomingData (this=0x7f9d7c18d0a0) at ./net/SslSocket.hpp:140 #34 0x000000000081e02c in StreamSocket::handlePoll (this=0x7f9d7c18d0a0, disposition=..., now=..., events=1) at net/Socket.hpp:1348 #35 0x0000000000816082 in SocketPoll::poll(long) () at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1123 #36 0x0000000000652250 in SocketPoll::poll (timeoutMax=..., this=<optimized out>) at ./net/Socket.hpp:689 #37 DocumentBroker::pollThread() () at wsd/DocumentBroker.cpp:372 #38 0x00000000008171a5 in SocketPoll::pollingThreadEntry() () at net/Socket.cpp:390 #39 0x0000000000be1c83 in execute_native_thread_routine () #40 0x00007f9d9bc896db in start_thread (arg=0x7f9d527fc700) at pthread_create.c:463 #41 0x00007f9d9b9b274f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com> Change-Id: Ie0d9e547dc9b4803ea95848c76302601a996c53a
Ashod
added a commit
that referenced
this pull request
Nov 2, 2024
Now that we re-use connections, we have revealed a corner-case that causes some noise. Remote connections might not retain HTTP connections past their immediate purpose and rudely reset the connection after a certain timeout. Apache has such a short timeout of between 5 and 15 seconds, by default. And, it seems, HA Proxy is similar. When the connection is not reused by the client within the timeout, it is simply closed. This wakes us up and we get revents with POLLIN, POLLHUP, and POLLERR (that is, 0x19). This patch handles this case by recognizing that we got POLLHUP already and the socket is closed before doing read(2). That is, read(2) *is* expected to fail with ECONNRESET. We handle this case specifically by avoiding reporting it as an error. We will still log an error if we get ECONNRESET while reading, without having woken up with POLLHUP, even though technically that is also possible. (Ideally, we would flag whether the socket is reusable or not and also suppress a close immediately after reading all the data.) As such, this is *not* a functional change; we only tollerate draining a dead connection. Here is a sample where socket #38 is used to request a static file through HTTP GET: 16.150238 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 4 (of 7): 0x1| net/Socket.cpp:558 16.150244 [ websrv_poll ] TRC #38: Read 506 bytes in addition to 0 buffered bytes| net/Socket.hpp:1166 16.150246 [ websrv_poll ] TRC #38: Incoming data buffer 506 bytes, read result: 506, events: 0x1 (not closed)| net/Socket.hpp:1350 16.150270 [ websrv_poll ] INF #38: parseHeader: Client HTTP Request: GET, uri `/browser/ebaa6a6/images/lc_addcitationnote.svg` HTTP/1.1, sz[header 506, content -1], offset 506, chunked false, host: office.nc-presales.top / user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:131.0) Gecko/20100101 Firefox/131.0 / accept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5 / accept-language: en,en-US;q=0.5 / accept-encoding: gzip, deflate, br, zstd / dnt: 1 / sec-fetch-dest: image / sec-fetch-mode: no-cors / sec-fetch-site: same-origin / sec-gpc: 1 / priority: u=5, i / x-real-ip: 176.145.78.103 / x-forwarded-for: 176.145.78.103| net/Socket.cpp:1340 16.150276 [ websrv_poll ] DBG #38: Handling request: /browser/ebaa6a6/images/lc_addcitationnote.svg, closeConnection false| wsd/ClientRequestDispatcher.cpp:670 16.150287 [ websrv_poll ] TRC Fileserver request: /browser/ebaa6a6/images/lc_addcitationnote.svg| wsd/FileServer.cpp:524 16.150303 [ websrv_poll ] TRC #38: Sending compressed : file [/browser/dist/images/lc_addcitationnote.svg]: Date: Thu, 31 Oct 2024 12:25:16 / Server: COOLWSD HTTP Server 24.04.7.3 / Content-Type: image/svg+xml / Content-Encoding: gzip / Content-Length: 489 / Cache-Control: max-age=11059200 / ETag: "ebaa6a6" / X-Content-Type-Options: nosniff| wsd/FileServer.cpp:732 16.150317 [ websrv_poll ] TRC #38: Wrote 248 bytes of 248 buffered data| net/Socket.hpp:1490 16.150323 [ websrv_poll ] TRC #38: Wrote 489 bytes of 489 buffered data| net/Socket.hpp:1490 16.150326 [ websrv_poll ] DBG #38: Handled request: /browser/ebaa6a6/images/lc_addcitationnote.svg, inBuf[sz 506 -> 0, rm 506], connection open true| wsd/ClientRequestDispatcher.cpp:952 16.150341 [ websrv_poll ] TRC #38: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 16.201424 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 4 (of 7): 0x0| net/Socket.cpp:558 16.201547 [ websrv_poll ] TRC #38: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 16.211803 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 4 (of 7): 0x0| net/Socket.cpp:558 16.211810 [ websrv_poll ] TRC #38: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 27.991710 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 4 (of 7): 0x0| net/Socket.cpp:558 27.991836 [ websrv_poll ] TRC #28: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 27.991838 [ websrv_poll ] TRC #38: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 27.991840 [ websrv_poll ] TRC ppoll start, timeoutMicroS: 64000000 size 4| net/Socket.cpp:430 32.993143 [ websrv_poll ] TRC Poll completed with 2 live polls max (64000000us)| net/Socket.cpp:448 32.993196 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 3 (of 4): 0x19| net/Socket.cpp:558 32.993201 [ websrv_poll ] ERR #38: Read failed, have 0 buffered bytes (ECONNRESET: Connection reset by peer)| net/Socket.hpp:1156 32.993210 [ websrv_poll ] TRC #38: Incoming data buffer 0 bytes, read result: -1, events: 0x19 (closed)| net/Socket.hpp:1350 32.993212 [ websrv_poll ] DBG #38: Closed after reading| net/Socket.hpp:1373 32.993213 [ websrv_poll ] TRC #38: Closed. Firing onDisconnect.| net/Socket.hpp:1445 Notice how the socket remained open after serving the file for over 15 seconds, until we logged the error. With this patch, the ERR line will become: 32.993201 [ websrv_poll ] TRC #38: Read failed, because the connection is reset by peer, have 0 buffered bytes: ECONNRESET| net/Socket.hpp:1156 Change-Id: Id440fc25ff899b44bc4db0b267cde84cca78282d Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Ashod
added a commit
that referenced
this pull request
Nov 2, 2024
Now that we re-use connections, we have revealed a corner-case that causes some noise. Remote connections might not retain HTTP connections past their immediate purpose and rudely reset the connection after a certain timeout. Apache has such a short timeout of between 5 and 15 seconds, by default. And, it seems, HA Proxy is similar. When the connection is not reused by the client within the timeout, it is simply closed. This wakes us up and we get revents with POLLIN, POLLHUP, and POLLERR (that is, 0x19). This patch handles this case by recognizing that we often get POLLHUP and the socket is closed before doing read(2). That is, read(2) *is* expected to fail with ECONNRESET. We handle this case specifically by avoiding reporting it as an error. We will still log an error if we get ECONNRESET while reading, when we haven't been idle, even though technically that is also possible. (Ideally, we would flag whether the socket is reusable or not and also suppress a close immediately after reading all the data.) As such, this is *not* a functional change; we only tollerate draining a dead connection without noisily logging. Here is a sample where socket #38 is used to request a static file through HTTP GET: 16.150238 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 4 (of 7): 0x1| net/Socket.cpp:558 16.150244 [ websrv_poll ] TRC #38: Read 506 bytes in addition to 0 buffered bytes| net/Socket.hpp:1166 16.150246 [ websrv_poll ] TRC #38: Incoming data buffer 506 bytes, read result: 506, events: 0x1 (not closed)| net/Socket.hpp:1350 16.150270 [ websrv_poll ] INF #38: parseHeader: Client HTTP Request: GET, uri `/browser/ebaa6a6/images/lc_addcitationnote.svg` HTTP/1.1, sz[header 506, content -1], offset 506, chunked false, host: office.nc-presales.top / user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:131.0) Gecko/20100101 Firefox/131.0 / accept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5 / accept-language: en,en-US;q=0.5 / accept-encoding: gzip, deflate, br, zstd / dnt: 1 / sec-fetch-dest: image / sec-fetch-mode: no-cors / sec-fetch-site: same-origin / sec-gpc: 1 / priority: u=5, i / x-real-ip: 176.145.78.103 / x-forwarded-for: 176.145.78.103| net/Socket.cpp:1340 16.150276 [ websrv_poll ] DBG #38: Handling request: /browser/ebaa6a6/images/lc_addcitationnote.svg, closeConnection false| wsd/ClientRequestDispatcher.cpp:670 16.150287 [ websrv_poll ] TRC Fileserver request: /browser/ebaa6a6/images/lc_addcitationnote.svg| wsd/FileServer.cpp:524 16.150303 [ websrv_poll ] TRC #38: Sending compressed : file [/browser/dist/images/lc_addcitationnote.svg]: Date: Thu, 31 Oct 2024 12:25:16 / Server: COOLWSD HTTP Server 24.04.7.3 / Content-Type: image/svg+xml / Content-Encoding: gzip / Content-Length: 489 / Cache-Control: max-age=11059200 / ETag: "ebaa6a6" / X-Content-Type-Options: nosniff| wsd/FileServer.cpp:732 16.150317 [ websrv_poll ] TRC #38: Wrote 248 bytes of 248 buffered data| net/Socket.hpp:1490 16.150323 [ websrv_poll ] TRC #38: Wrote 489 bytes of 489 buffered data| net/Socket.hpp:1490 16.150326 [ websrv_poll ] DBG #38: Handled request: /browser/ebaa6a6/images/lc_addcitationnote.svg, inBuf[sz 506 -> 0, rm 506], connection open true| wsd/ClientRequestDispatcher.cpp:952 16.150341 [ websrv_poll ] TRC #38: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 16.201424 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 4 (of 7): 0x0| net/Socket.cpp:558 16.201547 [ websrv_poll ] TRC #38: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 16.211803 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 4 (of 7): 0x0| net/Socket.cpp:558 16.211810 [ websrv_poll ] TRC #38: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 27.991710 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 4 (of 7): 0x0| net/Socket.cpp:558 27.991836 [ websrv_poll ] TRC #28: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 27.991838 [ websrv_poll ] TRC #38: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 27.991840 [ websrv_poll ] TRC ppoll start, timeoutMicroS: 64000000 size 4| net/Socket.cpp:430 32.993143 [ websrv_poll ] TRC Poll completed with 2 live polls max (64000000us)| net/Socket.cpp:448 32.993196 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 3 (of 4): 0x19| net/Socket.cpp:558 32.993201 [ websrv_poll ] ERR #38: Read failed, have 0 buffered bytes (ECONNRESET: Connection reset by peer)| net/Socket.hpp:1156 32.993210 [ websrv_poll ] TRC #38: Incoming data buffer 0 bytes, read result: -1, events: 0x19 (closed)| net/Socket.hpp:1350 32.993212 [ websrv_poll ] DBG #38: Closed after reading| net/Socket.hpp:1373 32.993213 [ websrv_poll ] TRC #38: Closed. Firing onDisconnect.| net/Socket.hpp:1445 Notice how the socket remained open after serving the file for over 15 seconds, until we logged the error. With this patch, the ERR line will become: 32.993201 [ websrv_poll ] TRC #38: Read failed, because the connection is reset by peer, have 0 buffered bytes: ECONNRESET| net/Socket.hpp:1156 Change-Id: Id440fc25ff899b44bc4db0b267cde84cca78282d Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
mmeeks
pushed a commit
that referenced
this pull request
Nov 2, 2024
Now that we re-use connections, we have revealed a corner-case that causes some noise. Remote connections might not retain HTTP connections past their immediate purpose and rudely reset the connection after a certain timeout. Apache has such a short timeout of between 5 and 15 seconds, by default. And, it seems, HA Proxy is similar. When the connection is not reused by the client within the timeout, it is simply closed. This wakes us up and we get revents with POLLIN, POLLHUP, and POLLERR (that is, 0x19). This patch handles this case by recognizing that we often get POLLHUP and the socket is closed before doing read(2). That is, read(2) *is* expected to fail with ECONNRESET. We handle this case specifically by avoiding reporting it as an error. We will still log an error if we get ECONNRESET while reading, when we haven't been idle, even though technically that is also possible. (Ideally, we would flag whether the socket is reusable or not and also suppress a close immediately after reading all the data.) As such, this is *not* a functional change; we only tollerate draining a dead connection without noisily logging. Here is a sample where socket #38 is used to request a static file through HTTP GET: 16.150238 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 4 (of 7): 0x1| net/Socket.cpp:558 16.150244 [ websrv_poll ] TRC #38: Read 506 bytes in addition to 0 buffered bytes| net/Socket.hpp:1166 16.150246 [ websrv_poll ] TRC #38: Incoming data buffer 506 bytes, read result: 506, events: 0x1 (not closed)| net/Socket.hpp:1350 16.150270 [ websrv_poll ] INF #38: parseHeader: Client HTTP Request: GET, uri `/browser/ebaa6a6/images/lc_addcitationnote.svg` HTTP/1.1, sz[header 506, content -1], offset 506, chunked false, host: office.nc-presales.top / user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:131.0) Gecko/20100101 Firefox/131.0 / accept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5 / accept-language: en,en-US;q=0.5 / accept-encoding: gzip, deflate, br, zstd / dnt: 1 / sec-fetch-dest: image / sec-fetch-mode: no-cors / sec-fetch-site: same-origin / sec-gpc: 1 / priority: u=5, i / x-real-ip: 176.145.78.103 / x-forwarded-for: 176.145.78.103| net/Socket.cpp:1340 16.150276 [ websrv_poll ] DBG #38: Handling request: /browser/ebaa6a6/images/lc_addcitationnote.svg, closeConnection false| wsd/ClientRequestDispatcher.cpp:670 16.150287 [ websrv_poll ] TRC Fileserver request: /browser/ebaa6a6/images/lc_addcitationnote.svg| wsd/FileServer.cpp:524 16.150303 [ websrv_poll ] TRC #38: Sending compressed : file [/browser/dist/images/lc_addcitationnote.svg]: Date: Thu, 31 Oct 2024 12:25:16 / Server: COOLWSD HTTP Server 24.04.7.3 / Content-Type: image/svg+xml / Content-Encoding: gzip / Content-Length: 489 / Cache-Control: max-age=11059200 / ETag: "ebaa6a6" / X-Content-Type-Options: nosniff| wsd/FileServer.cpp:732 16.150317 [ websrv_poll ] TRC #38: Wrote 248 bytes of 248 buffered data| net/Socket.hpp:1490 16.150323 [ websrv_poll ] TRC #38: Wrote 489 bytes of 489 buffered data| net/Socket.hpp:1490 16.150326 [ websrv_poll ] DBG #38: Handled request: /browser/ebaa6a6/images/lc_addcitationnote.svg, inBuf[sz 506 -> 0, rm 506], connection open true| wsd/ClientRequestDispatcher.cpp:952 16.150341 [ websrv_poll ] TRC #38: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 16.201424 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 4 (of 7): 0x0| net/Socket.cpp:558 16.201547 [ websrv_poll ] TRC #38: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 16.211803 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 4 (of 7): 0x0| net/Socket.cpp:558 16.211810 [ websrv_poll ] TRC #38: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 27.991710 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 4 (of 7): 0x0| net/Socket.cpp:558 27.991836 [ websrv_poll ] TRC #28: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 27.991838 [ websrv_poll ] TRC #38: setupPollFds getPollEvents: 0x1| net/Socket.hpp:880 27.991840 [ websrv_poll ] TRC ppoll start, timeoutMicroS: 64000000 size 4| net/Socket.cpp:430 32.993143 [ websrv_poll ] TRC Poll completed with 2 live polls max (64000000us)| net/Socket.cpp:448 32.993196 [ websrv_poll ] TRC #38: Handling poll events of websrv_poll at index 3 (of 4): 0x19| net/Socket.cpp:558 32.993201 [ websrv_poll ] ERR #38: Read failed, have 0 buffered bytes (ECONNRESET: Connection reset by peer)| net/Socket.hpp:1156 32.993210 [ websrv_poll ] TRC #38: Incoming data buffer 0 bytes, read result: -1, events: 0x19 (closed)| net/Socket.hpp:1350 32.993212 [ websrv_poll ] DBG #38: Closed after reading| net/Socket.hpp:1373 32.993213 [ websrv_poll ] TRC #38: Closed. Firing onDisconnect.| net/Socket.hpp:1445 Notice how the socket remained open after serving the file for over 15 seconds, until we logged the error. With this patch, the ERR line will become: 32.993201 [ websrv_poll ] TRC #38: Read failed, because the connection is reset by peer, have 0 buffered bytes: ECONNRESET| net/Socket.hpp:1156 Change-Id: Id440fc25ff899b44bc4db0b267cde84cca78282d Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The translations for the following file are now complete: