> >> It might already be fixed: I see a leak with 1.7.x@r1293812 but 
r1293813
> >> appears to fix it.
> >
> > Definitely not fixed, at least for https:// externals.  This is what I 

> > did:
> 
> I see small memory growth during checkout.  I see much larger memory
> growth for a second checkout on top of an existing checkout.  I've
> raised issue 4130:
> 
> http://subversion.tigris.org/issues/show_bug.cgi?id=4130

valgrind wasn't too useful, since svn appears to eventually
cleanup at the end, while still using huge amounts of memory
during checkout/update for me.

Interesting to note, the svn client allocates (and frees) almost
60GB worth of memory, using around 1.5GB peak total for this
test.  The complete 1.7 working copy size is only 5.4GB...

There are 10986 total svn:externals definitions.  A 1.6.17 client
checkout peaks at 68MB of memory usage on my Linux test machine.

Just some random valgrind results copied below.  Possibly they
are helpful...

==15406== HEAP SUMMARY:
==15406==     in use at exit: 33,870 bytes in 2,268 blocks
==15406==   total heap usage: 700,783,050 allocs, 700,780,782 frees, 
63,578,045,285 bytes allocated
==15406==
==15406== 5 bytes in 1 blocks are still reachable in loss record 1 of 485
==15406==    at 0x4005B83: malloc (vg_replace_malloc.c:195)
==15406==    by 0x652CF5: xmlStrndup (in /usr/lib/libxml2.so.2.6.26)
==15406==    by 0x652E9B: xmlStrdup (in /usr/lib/libxml2.so.2.6.26)
==15406==    by 0x5DEAF9: xmlNewCharEncodingHandler (in 
/usr/lib/libxml2.so.2.6.26)
==15406==    by 0x5DED1B: xmlInitCharEncodingHandlers (in 
/usr/lib/libxml2.so.2.6.26)
==15406==    by 0x5DF038: xmlGetCharEncodingHandler (in 
/usr/lib/libxml2.so.2.6.26)
==15406==    by 0x608E0C: xmlAllocParserInputBuffer (in 
/usr/lib/libxml2.so.2.6.26)
==15406==    by 0x5FA5D6: xmlCreatePushParserCtxt (in 
/usr/lib/libxml2.so.2.6.26)
==15406==    by 0x82C7C8A: ne_xml_create (ne_xml.c:499)
==15406==    by 0x81CF416: xml_parser_create (util.c:61)
==15406==    by 0x81D13CE: svn_ra_neon__xml_parser_create (util.c:1198)
==15406==    by 0x81CAE27: svn_ra_neon__exchange_capabilities 
(options.c:305)
==15406==    by 0x81B914C: svn_ra_neon__open (session.c:1081)
==15406==    by 0x8149BAF: svn_ra_open4 (ra_loader.c:493)
==15406==    by 0x80B7F68: svn_client__open_ra_session_internal (ra.c:333)
==15406==    by 0x80B84CC: svn_client__ra_session_from_path (ra.c:471)
==15406==    by 0x8071257: svn_client__checkout_internal (checkout.c:134)
==15406==    by 0x807191A: svn_client_checkout3 (checkout.c:255)
==15406==    by 0x804EFE3: svn_cl__checkout (checkout-cmd.c:161)
==15406==    by 0x805C61C: main (main.c:2659)

==15406== 12 bytes in 1 blocks are still reachable in loss record 9 of 485
==15406==    at 0x4005B83: malloc (vg_replace_malloc.c:195)
==15406==    by 0x4E821D: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4E88CE: CRYPTO_malloc (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44B5E8: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44BA7B: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44B2F8: CRYPTO_new_ex_data (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4A9FA9: X509_STORE_new (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x81BEBC: SSL_CTX_new (in /lib/libssl.so.0.9.8e)
==15406==    by 0x82CB1EC: ne_ssl_context_create (ne_openssl.c:561)
==15406==    by 0x82BD042: ne_session_create (ne_session.c:176)
==15406==    by 0x81B878C: svn_ra_neon__open (session.c:830)
==15406==    by 0x8149BAF: svn_ra_open4 (ra_loader.c:493)
==15406==    by 0x80B7F68: svn_client__open_ra_session_internal (ra.c:333)
==15406==    by 0x80B84CC: svn_client__ra_session_from_path (ra.c:471)
==15406==    by 0x8071257: svn_client__checkout_internal (checkout.c:134)
==15406==    by 0x807191A: svn_client_checkout3 (checkout.c:255)
==15406==    by 0x804EFE3: svn_cl__checkout (checkout-cmd.c:161)
==15406==    by 0x805C61C: main (main.c:2659)

==15406== 16 bytes in 1 blocks are still reachable in loss record 226 of 
485
==15406==    at 0x4005B83: malloc (vg_replace_malloc.c:195)
==15406==    by 0x4E821D: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4E88CE: CRYPTO_malloc (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44CB31: OBJ_NAME_add (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x47C7AC: EVP_add_cipher (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x47FEAF: OpenSSL_add_all_ciphers (in 
/lib/libcrypto.so.0.9.8e)
==15406==    by 0x47FDFB: OPENSSL_add_all_algorithms_noconf (in 
/lib/libcrypto.so.0.9.8e)
==15406==    by 0x82C9B24: ne__ssl_init (ne_openssl.c:1138)
==15406==    by 0x82C262F: ne_sock_init (ne_socket.c:352)
==15406==    by 0x81B8459: initialize_neon (session.c:762)
==15406==    by 0x81D9C43: svn_atomic__init_once (atomic.c:51)
==15406==    by 0x81B84D9: ensure_neon_initialized (session.c:773)
==15406==    by 0x81B8681: svn_ra_neon__open (session.c:817)
==15406==    by 0x8149BAF: svn_ra_open4 (ra_loader.c:493)
==15406==    by 0x80B7F68: svn_client__open_ra_session_internal (ra.c:333)
==15406==    by 0x80B84CC: svn_client__ra_session_from_path (ra.c:471)
==15406==    by 0x8071257: svn_client__checkout_internal (checkout.c:134)
==15406==    by 0x807191A: svn_client_checkout3 (checkout.c:255)
==15406==    by 0x804EFE3: svn_cl__checkout (checkout-cmd.c:161)
==15406==    by 0x805C61C: main (main.c:2659)

==15406== 20 bytes in 1 blocks are still reachable in loss record 404 of 
485
==15406==    at 0x4005B83: malloc (vg_replace_malloc.c:195)
==15406==    by 0x4E821D: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4E88CE: CRYPTO_malloc (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x477BC6: sk_new (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x477C5D: sk_new_null (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44B5FF: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44BA7B: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44B2F8: CRYPTO_new_ex_data (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4A9FA9: X509_STORE_new (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x81BEBC: SSL_CTX_new (in /lib/libssl.so.0.9.8e)
==15406==    by 0x82CB1EC: ne_ssl_context_create (ne_openssl.c:561)
==15406==    by 0x82BD042: ne_session_create (ne_session.c:176)
==15406==    by 0x81B878C: svn_ra_neon__open (session.c:830)
==15406==    by 0x8149BAF: svn_ra_open4 (ra_loader.c:493)
==15406==    by 0x80B7F68: svn_client__open_ra_session_internal (ra.c:333)
==15406==    by 0x80B84CC: svn_client__ra_session_from_path (ra.c:471)
==15406==    by 0x8071257: svn_client__checkout_internal (checkout.c:134)
==15406==    by 0x807191A: svn_client_checkout3 (checkout.c:255)
==15406==    by 0x804EFE3: svn_cl__checkout (checkout-cmd.c:161)
==15406==    by 0x805C61C: main (main.c:2659)

==15406== 64 bytes in 1 blocks are still reachable in loss record 428 of 
485
==15406==    at 0x4005B83: malloc (vg_replace_malloc.c:195)
==15406==    by 0x4E821D: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4E88CE: CRYPTO_malloc (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x478316: lh_new (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44B519: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44B676: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44BC3B: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44B35D: CRYPTO_get_ex_new_index (in 
/lib/libcrypto.so.0.9.8e)
==15406==    by 0x4C85D5: COMP_zlib (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x81F4F9: ??? (in /lib/libssl.so.0.9.8e)
==15406==    by 0x81F706: SSL_COMP_get_compression_methods (in 
/lib/libssl.so.0.9.8e)
==15406==    by 0x825449: SSL_library_init (in /lib/libssl.so.0.9.8e)
==15406==    by 0x82C9B1D: ne__ssl_init (ne_openssl.c:1137)
==15406==    by 0x82C262F: ne_sock_init (ne_socket.c:352)
==15406==    by 0x81B8459: initialize_neon (session.c:762)
==15406==    by 0x81D9C43: svn_atomic__init_once (atomic.c:51)
==15406==    by 0x81B84D9: ensure_neon_initialized (session.c:773)
==15406==    by 0x81B8681: svn_ra_neon__open (session.c:817)
==15406==    by 0x8149BAF: svn_ra_open4 (ra_loader.c:493)
==15406==    by 0x80B7F68: svn_client__open_ra_session_internal (ra.c:333)

==15406== 84 bytes in 7 blocks are still reachable in loss record 433 of 
485
==15406==    at 0x4005B83: malloc (vg_replace_malloc.c:195)
==15406==    by 0x4E821D: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4E88CE: CRYPTO_malloc (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x478256: lh_insert (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x47940D: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x479001: ERR_load_strings (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44E305: ERR_load_OBJ_strings (in 
/lib/libcrypto.so.0.9.8e)
==15406==    by 0x4799A9: ERR_load_crypto_strings (in 
/lib/libcrypto.so.0.9.8e)
==15406==    by 0x81CA86: SSL_load_error_strings (in 
/lib/libssl.so.0.9.8e)
==15406==    by 0x82C9B18: ne__ssl_init (ne_openssl.c:1136)
==15406==    by 0x82C262F: ne_sock_init (ne_socket.c:352)
==15406==    by 0x81B8459: initialize_neon (session.c:762)
==15406==    by 0x81D9C43: svn_atomic__init_once (atomic.c:51)
==15406==    by 0x81B84D9: ensure_neon_initialized (session.c:773)
==15406==    by 0x81B8681: svn_ra_neon__open (session.c:817)
==15406==    by 0x8149BAF: svn_ra_open4 (ra_loader.c:493)
==15406==    by 0x80B7F68: svn_client__open_ra_session_internal (ra.c:333)
==15406==    by 0x80B84CC: svn_client__ra_session_from_path (ra.c:471)
==15406==    by 0x8071257: svn_client__checkout_internal (checkout.c:134)
==15406==    by 0x807191A: svn_client_checkout3 (checkout.c:255)

==15406== 96 bytes in 1 blocks are still reachable in loss record 437 of 
485
==15406==    at 0x4005B83: malloc (vg_replace_malloc.c:195)
==15406==    by 0x4E821D: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4E88CE: CRYPTO_malloc (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4782E7: lh_new (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44CACA: OBJ_NAME_init (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44CBA4: OBJ_NAME_add (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x47C7AC: EVP_add_cipher (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x8252FA: SSL_library_init (in /lib/libssl.so.0.9.8e)
==15406==    by 0x82C9B1D: ne__ssl_init (ne_openssl.c:1137)
==15406==    by 0x82C262F: ne_sock_init (ne_socket.c:352)
==15406==    by 0x81B8459: initialize_neon (session.c:762)
==15406==    by 0x81D9C43: svn_atomic__init_once (atomic.c:51)
==15406==    by 0x81B84D9: ensure_neon_initialized (session.c:773)
==15406==    by 0x81B8681: svn_ra_neon__open (session.c:817)
==15406==    by 0x8149BAF: svn_ra_open4 (ra_loader.c:493)
==15406==    by 0x80B7F68: svn_client__open_ra_session_internal (ra.c:333)
==15406==    by 0x80B84CC: svn_client__ra_session_from_path (ra.c:471)
==15406==    by 0x8071257: svn_client__checkout_internal (checkout.c:134)
==15406==    by 0x807191A: svn_client_checkout3 (checkout.c:255)
==15406==    by 0x804EFE3: svn_cl__checkout (checkout-cmd.c:161)

==15406== 108 bytes in 9 blocks are still reachable in loss record 440 of 
485
==15406==    at 0x4005B83: malloc (vg_replace_malloc.c:195)
==15406==    by 0x4E821D: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4E88CE: CRYPTO_malloc (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x478256: lh_insert (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x47940D: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x479001: ERR_load_strings (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x44C025: ERR_load_CRYPTO_strings (in 
/lib/libcrypto.so.0.9.8e)
==15406==    by 0x4799C9: ERR_load_crypto_strings (in 
/lib/libcrypto.so.0.9.8e)
==15406==    by 0x81CA86: SSL_load_error_strings (in 
/lib/libssl.so.0.9.8e)
==15406==    by 0x82C9B18: ne__ssl_init (ne_openssl.c:1136)
==15406==    by 0x82C262F: ne_sock_init (ne_socket.c:352)
==15406==    by 0x81B8459: initialize_neon (session.c:762)
==15406==    by 0x81D9C43: svn_atomic__init_once (atomic.c:51)
==15406==    by 0x81B84D9: ensure_neon_initialized (session.c:773)
==15406==    by 0x81B8681: svn_ra_neon__open (session.c:817)
==15406==    by 0x8149BAF: svn_ra_open4 (ra_loader.c:493)
==15406==    by 0x80B7F68: svn_client__open_ra_session_internal (ra.c:333)
==15406==    by 0x80B84CC: svn_client__ra_session_from_path (ra.c:471)
==15406==    by 0x8071257: svn_client__checkout_internal (checkout.c:134)
==15406==    by 0x807191A: svn_client_checkout3 (checkout.c:255)

==15406== 1,200 bytes in 100 blocks are still reachable in loss record 480 
of 485
==15406==    at 0x4005B83: malloc (vg_replace_malloc.c:195)
==15406==    by 0x4E821D: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4E88CE: CRYPTO_malloc (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x478256: lh_insert (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x47940D: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x479001: ERR_load_strings (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x49A59B: ERR_load_ASN1_strings (in 
/lib/libcrypto.so.0.9.8e)
==15406==    by 0x4799BE: ERR_load_crypto_strings (in 
/lib/libcrypto.so.0.9.8e)
==15406==    by 0x81CA86: SSL_load_error_strings (in 
/lib/libssl.so.0.9.8e)
==15406==    by 0x82C9B18: ne__ssl_init (ne_openssl.c:1136)
==15406==    by 0x82C262F: ne_sock_init (ne_socket.c:352)
==15406==    by 0x81B8459: initialize_neon (session.c:762)
==15406==    by 0x81D9C43: svn_atomic__init_once (atomic.c:51)
==15406==    by 0x81B84D9: ensure_neon_initialized (session.c:773)
==15406==    by 0x81B8681: svn_ra_neon__open (session.c:817)
==15406==    by 0x8149BAF: svn_ra_open4 (ra_loader.c:493)
==15406==    by 0x80B7F68: svn_client__open_ra_session_internal (ra.c:333)
==15406==    by 0x80B84CC: svn_client__ra_session_from_path (ra.c:471)
==15406==    by 0x8071257: svn_client__checkout_internal (checkout.c:134)
==15406==    by 0x807191A: svn_client_checkout3 (checkout.c:255)

==15406== 4,096 bytes in 1 blocks are still reachable in loss record 485 
of 485
==15406==    at 0x4005C82: realloc (vg_replace_malloc.c:476)
==15406==    by 0x4E8254: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4E89B6: CRYPTO_realloc (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4781E5: lh_insert (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x47940D: ??? (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x479001: ERR_load_strings (in /lib/libcrypto.so.0.9.8e)
==15406==    by 0x4B1245: ERR_load_X509V3_strings (in 
/lib/libcrypto.so.0.9.8e)
==15406==    by 0x4799D9: ERR_load_crypto_strings (in 
/lib/libcrypto.so.0.9.8e)
==15406==    by 0x81CA86: SSL_load_error_strings (in 
/lib/libssl.so.0.9.8e)
==15406==    by 0x82C9B18: ne__ssl_init (ne_openssl.c:1136)
==15406==    by 0x82C262F: ne_sock_init (ne_socket.c:352)
==15406==    by 0x81B8459: initialize_neon (session.c:762)
==15406==    by 0x81D9C43: svn_atomic__init_once (atomic.c:51)
==15406==    by 0x81B84D9: ensure_neon_initialized (session.c:773)
==15406==    by 0x81B8681: svn_ra_neon__open (session.c:817)
==15406==    by 0x8149BAF: svn_ra_open4 (ra_loader.c:493)
==15406==    by 0x80B7F68: svn_client__open_ra_session_internal (ra.c:333)
==15406==    by 0x80B84CC: svn_client__ra_session_from_path (ra.c:471)
==15406==    by 0x8071257: svn_client__checkout_internal (checkout.c:134)
==15406==    by 0x807191A: svn_client_checkout3 (checkout.c:255)
==15406==
==15406== LEAK SUMMARY:
==15406==    definitely lost: 0 bytes in 0 blocks
==15406==    indirectly lost: 0 bytes in 0 blocks
==15406==      possibly lost: 0 bytes in 0 blocks
==15406==    still reachable: 33,870 bytes in 2,268 blocks
==15406==         suppressed: 0 bytes in 0 blocks

Reply via email to