Re: svn checkout Hangs/Crashes/Succeeds Over HTTP

Nico Kadel-Garcia <[email protected]>
Newsgroups gmane.comp.version-control.subversion.user
Message-ID <CAOCN9rwjs7vXW+zZf+i44WVWfxow3F=uivT4pKRjc77z5RRdbA@mail.gmail.com>
How did you upgrade your server from RHEL 6 to RHEL 8? Did you run
"svnadmin upgrade" on the repo?  And just how *big* is the repo? Does
your client setup work with a notably smaller repo? And do the
problems happen if you use svn:// rather than https:// ? Because I've
been dealing with Subversion for a long time, and I have up on the
httpd integration years ago, The complex integration with an
overmuscled and constantly evolving, feature evolving webserver was
not something I bother with anymore, and it has big problems with big
repos, including its own repo over at http://svn.apache.org/repos/asf,
which can't be reliably synced anymore because it's gotten so large.

On Fri, May 10, 2024 at 4:17 PM Williams, James P. {Jim} (JSC-CD4)[KBR
Wyle Services, LLC] via users <[email protected]> wrote:
>
> I'm upgrading an Apache HTTP server of our SVN repos on RedHat Enterprise Linux 8.  Using Subversion 1.14.1, svn checkout of even a small, simple repo with about 150 files hangs about 90% of the time, crashes 5%, and succeeds 5%.  Given enough time, the hangs eventually time out after checking out much of the repo.  A debugger shows the following stack during the hang.
>
>
>
>       #0  epoll_wait                   /usr/lib64/libc.so.6
>
>       #1  impl_pollset_poll            /usr/lib64/libapr-1.so.0
>
>       #2  serf_context_run             /usr/lib64/libserf-1.so.0
>
>       #3  svn_ra_serf.context_run      /usr/lib64/libsvn_ra_serf-1.so.0
>
>       #4  finish_report                /usr/lib64/libsvn_ra_serf-1.so.0
>
>       #5  svn_wc_crawl_revisions5      /usr/lib64/libsvn_wc-1.so.0
>
>       #6  update_internal.isra         /usr/lib64/libsvn_client-1.so.0
>
>       #7  svn_client.update_internal   /usr/lib64/libsvn_client-1.so.0
>
>       #8  svn_client.checkout_internal /usr/lib64/libsvn_client-1.so.0
>
>       #9  svn_client_checkout3         /usr/lib64/libsvn_client-1.so.0
>
>       #10 svn_cl.checkout
>
>       #11 sub_main
>
>       #12 main
>
>
>
> strace shows repeated calls to epoll_wait about 1 sec apart.
>
>
>
> When the checkout crashes, it's a SIGSEGV with this stack,
>
>
>
>       #0  apr_pool_create_ex            (libapr-1.so.0)
>
>       #1  svn_pool_create_ex            (libsvn_subr-1.so.0)
>
>       #2  update_opened                 (libsvn_ra_serf-1.so.0)
>
>       #3  expat_start                   (libsvn_ra_serf-1.so.0)
>
>       #4  expat_start_handler           (libsvn_subr-1.so.0)
>
>       #5  doContent                     (libexpat.so.1)
>
>       #6  contentProcessor              (libexpat.so.1)
>
>       #7  XML_ParseBuffer               (libexpat.so.1)
>
>       #8  svn_xml_parse                 (libsvn_subr-1.so.0)
>
>      #9  expat_response_handler        (libsvn_ra_serf-1.so.0)
>
>       #10 process_buffer.isra.9         (libsvn_ra_serf-1.so.0)
>
>       #11 finish_report                 (libsvn_ra_serf-1.so.0)
>
>       #12 svn_wc_crawl_revisions5       (libsvn_wc-1.so.0)
>
>       #13 update_internal.isra.0        (libsvn_client-1.so.0)
>
>       #14 svn_client__update_internal   (libsvn_client-1.so.0)
>
>       #15 svn_client__checkout_internal (libsvn_client-1.so.0)
>
>       #16 svn_client_checkout3          (libsvn_client-1.so.0)
>
>       #17 svn_cl__checkout              (svn)
>
>       #18 sub_main                      (svn)
>
>       #19 main                          (svn)
>
>       #20 __libc_start_main             (libc.so.6)
>
>       #21 _start                        (svn)
>
>
>
> or this one,
>
>
>
>       #0  apr_allocator_alloc          (libapr-1.so.0)
>
>       #1  serf_bucket_mem_alloc        (libserf-1.so.0)
>
>       #2  serf_bucket_response_create  (libserf-1.so.0)
>
>       #3  serf.process_connection      (libserf-1.so.0)
>
>       #4  serf_event_trigger           (libserf-1.so.0)
>
>       #5  serf_context_run             (libserf-1.so.0)
>
>       #6  svn_ra_serf.context_run      (libsvn_ra_serf-1.so.0)
>
>       #7  finish_report                (libsvn_ra_serf-1.so.0)
>
>       #8  svn_wc_crawl_revisions5      (libsvn_wc-1.so.0)
>
>       #9  update_internal.isra         (libsvn_client-1.so.0)
>
>       #10 svn_client.update_internal   (libsvn_client-1.so.0)
>
>       #11 svn_client.checkout_internal (libsvn_client-1.so.0)
>
>       #12 svn_client_checkout3         (libsvn_client-1.so.0)
>
>       #13 svn_cl.checkout              (svn)
>
>       #14 sub_main                     (svn)
>
>       #15 main                         (svn)
>
>
>
> After a failure, I'm left with a half-checked out working copy with many locks.  I can complete it with svn cleanup and another svn checkout, but that's not realistic for our CI/CD or general use.  Server logs show no indication of a problem; the server appears healthy.
>
>
>
> I've tried a million things before submitting this bug report, read half a million posts and searches, but haven't been able to get past this.  I'd sure appreciate any ideas you have on the way forward.  Here's a bit more about my system.
>
>
>
> svn, version 1.14.1 (r1886195)
>
>      * ra_svn : Module for accessing a repository using the svn network protocol.
>
>       - with Cyrus SASL authentication
>
>       - handles 'svn' scheme
>
>      * ra_local : Module for accessing a repository on local disk.
>
>       - handles 'file' scheme
>
>      * ra_serf : Module for accessing a repository via WebDAV protocol using serf.
>
>       - using serf 1.3.9 (compiled with 1.3.9)
>
>       - handles 'http' scheme
>
>       - handles 'https' scheme
>
>
>
>      The following authentication credential caches are available:
>
>
>
>      * Plaintext cache in /home/me/.subversion
>
>      * Gnome Keyring
>
>      * GPG-Agent
>
> svn 1.10.2 was failing the same way before we upgraded to 1.14.1 as a possible fix.
> Checking out to a local disk succeeds more often, but still hangs and crashes.  Checking out to an NFS drive just makes it worse.
>
>
>
> And here's more about our Apache.
>
>
>
> Server version: Apache/2.4.37 (Red Hat Enterprise Linux)
>
> Server built:   Aug 30 2023 11:01:53
>
> Server's Module Magic Number: 20120211:83
>
> Server loaded:  APR 1.6.3, APR-UTIL 1.6.1
>
> Compiled using: APR 1.6.3, APR-UTIL 1.6.1
>
> Architecture:   64-bit
>
> Server MPM:     worker
>
>   threaded:     yes (fixed thread count)
>
>     forked:     yes (variable process count)
>
> Server compiled with....
>
> -D APR_HAS_SENDFILE
>
> -D APR_HAS_MMAP
>
> -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
>
> -D APR_USE_SYSVSEM_SERIALIZE
>
> -D APR_USE_PTHREAD_SERIALIZE
>
> -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
>
> -D APR_HAS_OTHER_CHILD
>
> -D AP_HAVE_RELIABLE_PIPED_LOGS
>
> -D DYNAMIC_MODULE_LIMIT=256
>
> -D HTTPD_ROOT="/etc/httpd"
>
> -D SUEXEC_BIN="/usr/sbin/suexec"
>
> -D DEFAULT_PIDLOG="run/httpd.pid"
>
> -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
>
> -D DEFAULT_ERRORLOG="logs/error_log"
>
> -D AP_TYPES_CONFIG_FILE="conf/mime.types"
>
> -D SERVER_CONFIG_FILE="conf/httpd.conf"
>
> Access to this server from a browser with SVN and ViewVC pages seems to work.
> Authentication is over Kerberos with mod_auth_gssapi.
> Authorization uses AuthzSVNAccessFile and an access file.
> SSL is used with SSLCryptoDevice set to builtin, based on this.
> I've tried all three MPMs with no change, based on another post:  prefork, worker, and event.
> We've had Apache running on RedHat 6 with these repos for many years.
>
>
>
> I'd be glad to provide additional details or run more tests.  Thanks for any ideas you have, and for supporting this software.
>
>
>
> Jim
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.