src/dblib/unittests/rpc

Main

Hostnamekrb5.freetds.io
uname -aLinux krb5.freetds.io 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
date2024-03-23

==29139== Memcheck, a memory error detector
==29139== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==29139== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==29139== Command: ./rpc
==29139== 
--29139-- Valgrind options:
--29139--    --tool=memcheck
--29139--    --vgdb=no
--29139--    --num-callers=20
--29139--    --leak-check=yes
--29139--    -v
--29139--    --show-reachable=yes
--29139--    --log-fd=3
--29139--    --suppressions=/home/test/suppressions.supp
--29139--    --track-origins=yes
--29139-- Contents of /proc/version:
--29139--   Linux version 4.15.0-213-generic (buildd@lcy02-amd64-079) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023
--29139-- 
--29139-- Arch and hwcaps: AMD64, LittleEndian, amd64-cx16-lzcnt-rdtscp-sse3-avx-avx2-bmi
--29139-- Page sizes: currently 4096, max supported 4096
--29139-- Valgrind library directory: /usr/lib/valgrind
--29139-- Reading syms from /home/test/ftdstmp/ftds_comp99/test1/src/dblib/unittests/rpc
--29139-- Reading syms from /lib/x86_64-linux-gnu/ld-2.27.so
--29139--   Considering /lib/x86_64-linux-gnu/ld-2.27.so ..
--29139--   .. CRC mismatch (computed 2977d8b2 wanted c64f09ed)
--29139--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/ld-2.27.so ..
--29139--   .. CRC is valid
--29139-- Reading syms from /usr/lib/valgrind/memcheck-amd64-linux
--29139--   Considering /usr/lib/valgrind/memcheck-amd64-linux ..
--29139--   .. CRC mismatch (computed 41ddb025 wanted 9972f546)
--29139--    object doesn't have a symbol table
--29139--    object doesn't have a dynamic symbol table
--29139-- Scheduler: using generic scheduler lock implementation.
--29139-- Reading suppressions file: /home/test/suppressions.supp
--29139-- Reading suppressions file: /usr/lib/valgrind/default.supp
--29139-- REDIR: 0x4020d20 (ld-linux-x86-64.so.2:strlen) redirected to 0x580608c1 (???)
--29139-- REDIR: 0x4020b00 (ld-linux-x86-64.so.2:index) redirected to 0x580608db (???)
--29139-- Reading syms from /usr/lib/valgrind/vgpreload_core-amd64-linux.so
--29139--   Considering /usr/lib/valgrind/vgpreload_core-amd64-linux.so ..
--29139--   .. CRC mismatch (computed 50df1b30 wanted 4800a4cf)
--29139--    object doesn't have a symbol table
--29139-- Reading syms from /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
--29139--   Considering /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so ..
--29139--   .. CRC mismatch (computed f893b962 wanted 95ee359e)
--29139--    object doesn't have a symbol table
==29139== WARNING: new redirection conflicts with existing -- ignoring it
--29139--     old: 0x04020d20 (strlen              ) R-> (0000.0) 0x580608c1 ???
--29139--     new: 0x04020d20 (strlen              ) R-> (2007.0) 0x04c34db0 strlen
--29139-- REDIR: 0x401d540 (ld-linux-x86-64.so.2:strcmp) redirected to 0x4c35ee0 (strcmp)
--29139-- REDIR: 0x4021260 (ld-linux-x86-64.so.2:mempcpy) redirected to 0x4c394f0 (mempcpy)
--29139-- Reading syms from /home/test/ftdstmp/ftds_comp99/src/dblib/.libs/libsybdb.so.5.1.0
--29139-- Reading syms from /lib/x86_64-linux-gnu/libpthread-2.27.so
--29139--   Considering /usr/lib/debug/.build-id/1f/06001733b9be9478b105faf0dac6bdf36c85de.debug ..
--29139--   .. build-id is valid
--29139-- Reading syms from /lib/x86_64-linux-gnu/libc-2.27.so
--29139--   Considering /lib/x86_64-linux-gnu/libc-2.27.so ..
--29139--   .. CRC mismatch (computed f250d419 wanted 4aacab51)
--29139--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libc-2.27.so ..
--29139--   .. CRC is valid
--29139-- Reading syms from /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2
--29139--    object doesn't have a symbol table
--29139-- Reading syms from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
--29139--    object doesn't have a symbol table
--29139-- Reading syms from /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
--29139--    object doesn't have a symbol table
--29139-- Reading syms from /usr/lib/x86_64-linux-gnu/libkrb5.so.3.3
--29139--    object doesn't have a symbol table
--29139-- Reading syms from /usr/lib/x86_64-linux-gnu/libk5crypto.so.3.1
--29139--    object doesn't have a symbol table
--29139-- Reading syms from /lib/x86_64-linux-gnu/libcom_err.so.2.1
--29139--    object doesn't have a symbol table
--29139-- Reading syms from /usr/lib/x86_64-linux-gnu/libkrb5support.so.0.1
--29139--    object doesn't have a symbol table
--29139-- Reading syms from /lib/x86_64-linux-gnu/libdl-2.27.so
--29139--   Considering /lib/x86_64-linux-gnu/libdl-2.27.so ..
--29139--   .. CRC mismatch (computed 56b0b30d wanted 7867693f)
--29139--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libdl-2.27.so ..
--29139--   .. CRC is valid
--29139-- Reading syms from /lib/x86_64-linux-gnu/libkeyutils.so.1.5
--29139--    object doesn't have a symbol table
--29139-- Reading syms from /lib/x86_64-linux-gnu/libresolv-2.27.so
--29139--   Considering /lib/x86_64-linux-gnu/libresolv-2.27.so ..
--29139--   .. CRC mismatch (computed 0da9c5d1 wanted b111a73d)
--29139--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libresolv-2.27.so ..
--29139--   .. CRC is valid
--29139-- REDIR: 0x53d4a50 (libc.so.6:memmove) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d3d60 (libc.so.6:strncpy) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d4d30 (libc.so.6:strcasecmp) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d37b0 (libc.so.6:strcat) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d3d90 (libc.so.6:rindex) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d6480 (libc.so.6:rawmemchr) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d4bc0 (libc.so.6:mempcpy) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d49f0 (libc.so.6:bcmp) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d3d20 (libc.so.6:strncmp) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d3820 (libc.so.6:strcmp) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d4b20 (libc.so.6:memset) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53f1db0 (libc.so.6:wcschr) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d3cc0 (libc.so.6:strnlen) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d3890 (libc.so.6:strcspn) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d4d80 (libc.so.6:strncasecmp) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d3860 (libc.so.6:strcpy) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d4ec0 (libc.so.6:memcpy@@GLIBC_2.14) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d3dc0 (libc.so.6:strpbrk) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d37e0 (libc.so.6:index) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d3c90 (libc.so.6:strlen) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53de380 (libc.so.6:memrchr) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d4dd0 (libc.so.6:strcasecmp_l) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d49c0 (libc.so.6:memchr) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53f2b70 (libc.so.6:wcslen) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d4070 (libc.so.6:strspn) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d4d00 (libc.so.6:stpncpy) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d4cd0 (libc.so.6:stpcpy) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d64b0 (libc.so.6:strchrnul) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d4e20 (libc.so.6:strncasecmp_l) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x5467700 (libc.so.6:__memcpy_chk) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x53d4900 (libc.so.6:strstr) redirected to 0x4a2c6e0 (_vgnU_ifunc_wrapper)
--29139-- REDIR: 0x54c4280 (libc.so.6:__strrchr_avx2) redirected to 0x4c34730 (rindex)
--29139-- REDIR: 0x54c4450 (libc.so.6:__strlen_avx2) redirected to 0x4c34cf0 (strlen)
--29139-- REDIR: 0x53cd910 (libc.so.6:free) redirected to 0x4c32cd0 (free)
--29139-- REDIR: 0x53cd020 (libc.so.6:malloc) redirected to 0x4c31aa0 (malloc)
--29139-- REDIR: 0x54c4990 (libc.so.6:__memcpy_avx_unaligned_erms) redirected to 0x4c386e0 (memmove)
--29139-- REDIR: 0x54bb3d0 (libc.so.6:__strncmp_sse42) redirected to 0x4c35570 (__strncmp_sse42)
--29139-- REDIR: 0x53d45a0 (libc.so.6:__GI_strstr) redirected to 0x4c39760 (__strstr_sse2)
--29139-- REDIR: 0x54c02e0 (libc.so.6:__memchr_avx2) redirected to 0x4c35f80 (memchr)
--29139-- REDIR: 0x54c01c0 (libc.so.6:__strspn_sse42) redirected to 0x4c39990 (strspn)
--29139-- REDIR: 0x54bff30 (libc.so.6:__strcspn_sse42) redirected to 0x4c398d0 (strcspn)
--29139-- REDIR: 0x54c4090 (libc.so.6:__strchrnul_avx2) redirected to 0x4c39020 (strchrnul)
found sqlexpress.tempdb for sa in "../../../PWD"
--29139-- REDIR: 0x54c4970 (libc.so.6:__mempcpy_avx_unaligned_erms) redirected to 0x4c39130 (mempcpy)
SQL text will be read from ../../../src/dblib/unittests/rpc.sql
Starting ./rpc
--29139-- REDIR: 0x53d0050 (libc.so.6:calloc) redirected to 0x4c33a70 (calloc)
--29139-- REDIR: 0x54c3e60 (libc.so.6:__strchr_avx2) redirected to 0x4c34950 (index)
--29139-- REDIR: 0x54c0e40 (libc.so.6:__strcasecmp_avx) redirected to 0x4c355f0 (strcasecmp)
About to logon
--29139-- REDIR: 0x54c4e10 (libc.so.6:__memset_avx2_unaligned_erms) redirected to 0x4c385d0 (memset)
--29139-- REDIR: 0x53ed810 (libc.so.6:__stpcpy_sse2_unaligned) redirected to 0x4c38200 (__stpcpy_sse2_unaligned)
expected error 20201: "Packet size of -1 not supported -- size of 0 used instead!"
About to open sqlexpress.tempdb
--29139-- REDIR: 0x53dfb30 (libc.so.6:__strcmp_sse2_unaligned) redirected to 0x4c35da0 (strcmp)
--29139-- Reading syms from /lib/x86_64-linux-gnu/libnss_compat-2.27.so
--29139--   Considering /lib/x86_64-linux-gnu/libnss_compat-2.27.so ..
--29139--   .. CRC mismatch (computed dc0305b8 wanted 460e4052)
--29139--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libnss_compat-2.27.so ..
--29139--   .. CRC is valid
--29139-- REDIR: 0x53ec200 (libc.so.6:__strcpy_sse2_unaligned) redirected to 0x4c34dd0 (strcpy)
--29139-- Reading syms from /lib/x86_64-linux-gnu/libnss_nis-2.27.so
--29139--   Considering /lib/x86_64-linux-gnu/libnss_nis-2.27.so ..
--29139--   .. CRC mismatch (computed 38cb38d0 wanted 96404ac2)
--29139--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libnss_nis-2.27.so ..
--29139--   .. CRC is valid
--29139-- Reading syms from /lib/x86_64-linux-gnu/libnsl-2.27.so
--29139--   Considering /lib/x86_64-linux-gnu/libnsl-2.27.so ..
--29139--   .. CRC mismatch (computed 12772991 wanted 58367bd1)
--29139--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libnsl-2.27.so ..
--29139--   .. CRC is valid
--29139-- Reading syms from /lib/x86_64-linux-gnu/libnss_files-2.27.so
--29139--   Considering /lib/x86_64-linux-gnu/libnss_files-2.27.so ..
--29139--   .. CRC mismatch (computed 2270a715 wanted a5763524)
--29139--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libnss_files-2.27.so ..
--29139--   .. CRC is valid
--29139-- REDIR: 0x53ef1f0 (libc.so.6:__strcat_sse2_unaligned) redirected to 0x4c34990 (strcat)
--29139-- REDIR: 0x53cec50 (libc.so.6:realloc) redirected to 0x4c33cb0 (realloc)
--29139-- Reading syms from /usr/lib/x86_64-linux-gnu/gconv/ISO8859-1.so
--29139--   Considering /usr/lib/x86_64-linux-gnu/gconv/ISO8859-1.so ..
--29139--   .. CRC mismatch (computed 83103428 wanted d26a1d18)
--29139--   Considering /usr/lib/debug/usr/lib/x86_64-linux-gnu/gconv/ISO8859-1.so ..
--29139--   .. CRC is valid
--29139-- REDIR: 0x54c0a60 (libc.so.6:__memcmp_avx2_movbe) redirected to 0x4c37e00 (bcmp)
--29139-- Reading syms from /usr/lib/x86_64-linux-gnu/gconv/UTF-16.so
--29139--   Considering /usr/lib/x86_64-linux-gnu/gconv/UTF-16.so ..
--29139--   .. CRC mismatch (computed da5394b1 wanted a59039cd)
--29139--   Considering /usr/lib/debug/usr/lib/x86_64-linux-gnu/gconv/UTF-16.so ..
--29139--   .. CRC is valid
--29139-- REDIR: 0x54c24b0 (libc.so.6:__strncasecmp_avx) redirected to 0x4c356d0 (strncasecmp)
--29139-- REDIR: 0x54c4980 (libc.so.6:__memcpy_chk_avx_unaligned_erms) redirected to 0x4c395e0 (__memcpy_chk)
--29139-- Reading syms from /usr/lib/x86_64-linux-gnu/gconv/CP1252.so
--29139--   Considering /usr/lib/x86_64-linux-gnu/gconv/CP1252.so ..
--29139--   .. CRC mismatch (computed ba33c29d wanted cdb3aa71)
--29139--   Considering /usr/lib/debug/usr/lib/x86_64-linux-gnu/gconv/CP1252.so ..
--29139--   .. CRC is valid
Check if server support long identifiers
	  1: SELECT 'x' AS this_is_a_really_really_long_identifier
trying to create a temporary stored procedure
Creating procedure #t0022
	  1: 
	  2: CREATE PROCEDURE #t0022 
	  3:   @null_input varchar(30) OUTPUT 
	  4: , @first_type varchar(30) OUTPUT 
	  5: , @nullout int OUTPUT
	  6: , @varchar_tds7_out varchar(8000) OUTPUT
	  7: , @nvarchar_tds7_out nvarchar(4000) OUTPUT
	  8: , @nrows int OUTPUT 
	  9: , @c_this_name_is_way_more_than_thirty_characters_charlie varchar(20)
	 10: , @nv nvarchar(20) = N'hello'
	 11: AS 
	 12: BEGIN 
	 13: if @null_input is not NULL begin 
	 14: 	select 'error: should be NULL' as status, @null_input as 'null_input'
	 15: 	return -42
	 16: end else begin
	 17: 	print 'Good: @null_input is NULL'
	 18: end
	 19: if @c_this_name_is_way_more_than_thirty_characters_charlie is not NULL begin 
	 20: 	select 'error: should be NULL' as status, @c_this_name_is_way_more_than_thirty_characters_charlie as '@c_this_name_is_way_more_than_thirty_characters_charlie'
	 21: 	return -42
	 22: end else begin
	 23: 	print 'Good: @c_this_name_is_way_more_than_thirty_characters_charlie is NULL'
	 24: end
	 25: select @null_input = max(convert(varchar(30), name)) from systypes 
	 26: select @first_type = min(convert(varchar(30), name)) from systypes 
	 27: select name from sysobjects where 0=1
	 28: select distinct convert(varchar(30), name) as 'type'  from systypes 
	 29: where name in ('int', 'char', 'text') 
	 30: select @nrows = @@rowcount 
	 31: set @varchar_tds7_out = replicate(char(123), 8000)
	 32: set @nvarchar_tds7_out = replicate(nchar(246), 4000)
	 33: select distinct @nv as '@nv', convert(varchar(30), name) as name  from systypes
	 34: select	  @null_input as 'null_input'
	 35: 	, @first_type as 'first_type'
	 36: 	, @nullout as 'nullout'
	 37: 	, @nrows as 'nrows'
	 38: 	, @c_this_name_is_way_more_than_thirty_characters_charlie as 'c'
	 39: 	, @nv as 'nv'
	 40: 	into #parameters
	 41: select * from #parameters
	 42: return 42 
	 43: END 
	 44: 
Created procedure #t0022
executing dbrpcinit
executing dbrpcparam for @null_input
executing dbrpcparam for @first_type
executing dbrpcparam for @nullout
executing dbrpcparam for @varchar_tds7_out
executing dbrpcparam for @nvarchar_tds7_out
executing dbrpcparam for @nrows
executing dbrpcparam for @c_this_name_is_way_more_than_thirty_characters_charlie
executing dbrpcparam for @nv
executing dbrpcsend
executing dbsqlok
Good: @null_input is NULL
Good: @c_this_name_is_way_more_than_thirty_characters_charlie is NULL
fetching results
fetched resultset 1 successfully:
column 1 (name) is 1 wide, buffer initialized to 'one'
name 
row count 0
hasretstatus 0
fetched resultset 2 successfully:
column 1 (type) is 1 wide, buffer initialized to 'one'
type 
char 
int 
text 
row count 3
hasretstatus 0
fetched resultset 3 successfully:
column 1 (@nv) is 1 wide, buffer initialized to 'one'
column 2 (name) is 1 wide, buffer initialized to 'two'
@nv name 
OK bigint 
OK binary 
OK bit 
OK char 
OK datetime 
OK decimal 
OK float 
OK image 
OK int 
OK money 
OK nchar 
OK ntext 
OK numeric 
OK nvarchar 
OK real 
OK smalldatetime 
OK smallint 
OK smallmoney 
OK sql_variant 
OK sysname 
OK text 
OK timestamp 
OK tinyint 
OK uniqueidentifier 
OK varbinary 
OK varchar 
OK xml 
row count 27
hasretstatus 0
fetched resultset 4 successfully:
column 1 (null_input) is 1 wide, buffer initialized to 'one'
column 2 (first_type) is 1 wide, buffer initialized to 'two'
column 3 (nullout) is 1 wide, buffer initialized to 'three'
column 4 (nrows) is 1 wide, buffer initialized to 'four'
column 5 (c) is 1 wide, buffer initialized to 'five'
null_input first_type nullout nrows c 
xml bigint   3   
row count 1
hasretstatus 1
retrieving return status...
42
retrieving output parameters...
param name                  type length  data                          
----  -------------------   ----  ----- ------------------------------
1     @null_input             39      3  xml                           
2     @first_type             39      6  bigint                        
3     @nullout                56      0                                
4     @varchar_tds7_out       39   8000  {{{{{{{{{{...                 
5     @nvarchar_tds7_out      39   4000  öööööööööö...                 
6     @nrows                  56      4  3                             
Good: Got 6 output parameters and 1 return status of 42.
Good: Got 4 resultsets and 1 empty resultset.
Dropping procedure
	  1: IF OBJECT_ID('t0022') IS NOT NULL DROP PROC t0022
--29139-- Discarding syms at 0x7e48710-0x7e4a25b in /usr/lib/x86_64-linux-gnu/gconv/UTF-16.so due to munmap()
rpc.c OK
--29139-- Discarding syms at 0x804c600-0x804d508 in /usr/lib/x86_64-linux-gnu/gconv/CP1252.so due to munmap()
--29139-- Discarding syms at 0x7c45600-0x7c46292 in /usr/lib/x86_64-linux-gnu/gconv/ISO8859-1.so due to munmap()
--29139-- Discarding syms at 0x74042a0-0x740a1ac in /lib/x86_64-linux-gnu/libnss_compat-2.27.so due to munmap()
--29139-- Discarding syms at 0x760f070-0x76160d9 in /lib/x86_64-linux-gnu/libnss_nis-2.27.so due to munmap()
--29139-- Discarding syms at 0x781d090-0x782a8a7 in /lib/x86_64-linux-gnu/libnsl-2.27.so due to munmap()
--29139-- Discarding syms at 0x7a35350-0x7a3bd8f in /lib/x86_64-linux-gnu/libnss_files-2.27.so due to munmap()
==29139== 
==29139== HEAP SUMMARY:
==29139==     in use at exit: 0 bytes in 0 blocks
==29139==   total heap usage: 6,777 allocs, 6,777 frees, 1,997,592 bytes allocated
==29139== 
==29139== All heap blocks were freed -- no leaks are possible
==29139== 
==29139== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
==29139== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Main