> >> 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