libcgrouptest: Cleanup valgrind output for libcgroup tests
libcgrouptest: Cleanup valgrind output for libcgroup tests

Fixes a few memory leaks, and leaked file handles.

[root@gondor tests]# make
g++ -g -O2 -Wall -DDEBUG -I .. -o libcgrouptest01 libcgrouptest01.c -L .. -lcgroup -lpthread
libcgrouptest01.c: In function ‘int group_modified(char*, int)’:
libcgrouptest01.c:1060: warning: format ‘%d’ expects type ‘int*’, but argument 3 has type ‘bool*’
s[root@gondor tests]# sh runlibcgrouptest.sh

Running first set of testcases
==============================
==14758== Memcheck, a memory error detector.
==14758== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
==14758== Using LibVEX rev 1804, a library for dynamic binary translation.
==14758== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==14758== Using valgrind-3.3.0, a dynamic binary instrumentation framework.
==14758== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==14758== For more details, rerun with: -v
==14758==
C:DBG: fs_mounted as recieved from script=0
TEST 1:PASS : cgroup_init()                      Ret Value = 50001
TEST 2:PASS : cgroup_attach_task()               Ret Value = 50014       Parameter nullcgroup
TEST 3:PASS : cgroup_new_cgroup()                Ret Value = 0
TEST 4:PASS : cgroup_create_cgroup()             Ret Value = 50014
TEST 5:PASS : cgroup_delete_cgroup()             Ret Value = 50014
TEST 6:PASS : cgroup_create_cgroup()             Ret Value = 50014
TEST 7:PASS : cgroup_delete_cgroup()             Ret Value = 50014
TEST 8:PASS : cgroup_add_controller()            Ret Value = 0
TEST 9:PASS : cgroup_add_controller()            Ret Value = 0
TEST10:PASS : cgroup_add_controller()            Ret Value = 0
==14758==
==14758== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 18 from 1)
==14758== malloc/free: in use at exit: 0 bytes in 0 blocks.
==14758== malloc/free: 18 allocs, 18 frees, 32,293 bytes allocated.
==14758== For counts of detected errors, rerun with: -v
==14758== All heap blocks were freed -- no leaks are possible.

Running second set of testcases
==============================
==14774== Memcheck, a memory error detector.
==14774== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
==14774== Using LibVEX rev 1804, a library for dynamic binary translation.
==14774== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==14774== Using valgrind-3.3.0, a dynamic binary instrumentation framework.
==14774== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==14774== For more details, rerun with: -v
==14774==
C:DBG: fs_mounted as recieved from script=1
C:DBG: mountpoint1 as recieved from script=/dev/cgroup_controllers-1
sanity check pass. cgroup
TEST 1:PASS : cgroup_attach_task()               Ret Value = 50014       Parameter nullcgroup
TEST 2:PASS : cgroup_init()                      Ret Value = 0
TEST 3:PASS : cgroup_attach_task()               Ret Value = 0   Task found in group/s
TEST 4:PASS : cgroup_attach_task_pid()           Ret Value = 50016
TEST 5:PASS : cgroup_new_cgroup()                Ret Value = 0
TEST 6:PASS : cgroup_create_cgroup()             Ret Value = 0   group found in filesystem
TEST 7:PASS : cgroup_attach_task()               Ret Value = 0   Task found in group/s
==14774== Conditional jump or move depends on uninitialised value(s)
==14774==    at 0x40070D8: strncat (mc_replace_strmem.c:214)
==14774==    by 0x804BC92: main (libcgrouptest01.c:1271)
==14774==
==14774== Conditional jump or move depends on uninitialised value(s)
==14774==    at 0x4007271: strcpy (mc_replace_strmem.c:268)
==14774==    by 0x402F24B: cgroup_modify_cgroup (api.c:1012)
==14774==    by 0x804BC9D: main (libcgrouptest01.c:252)
==14774==
==14774== Conditional jump or move depends on uninitialised value(s)
==14774==    at 0x4007285: strcpy (mc_replace_strmem.c:268)
==14774==    by 0x402F24B: cgroup_modify_cgroup (api.c:1012)
==14774==    by 0x804BC9D: main (libcgrouptest01.c:252)
==14774==
==14774== Conditional jump or move depends on uninitialised value(s)
==14774==    at 0x8049471: _ZL14group_modifiedPci (libcgrouptest01.c:1076)
==14774==    by 0x804C583: main (libcgrouptest01.c:254)
==14774==
==14774==    by 0x804C583: main (libcgrouptest01.c:254)
==14774==
==14774== Conditional jump or move depends on uninitialised value(s)
==14774==    at 0x8049479: _ZL14group_modifiedPci (libcgrouptest01.c:1076)
==14774==    by 0x804C583: main (libcgrouptest01.c:254)
==14774==
==14774== Conditional jump or move depends on uninitialised value(s)
==14774==    at 0x4007470: strncmp (mc_replace_strmem.c:314)
==14774==    by 0x804949B: _ZL14group_modifiedPci (libcgrouptest01.c:1076)
==14774==    by 0x804C583: main (libcgrouptest01.c:254)
TEST 8:PASS : cgroup_modify_cgroup()             Ret Value = 0   Parameter same cgroup
TEST 9:PASS : cgroup_new_cgroup()                Ret Value = 0
==14774==
==14774== Conditional jump or move depends on uninitialised value(s)
==14774==    at 0x4007271: strcpy (mc_replace_strmem.c:268)
==14774==    by 0x402F24B: cgroup_modify_cgroup (api.c:1012)
==14774==    by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889)
==14774==    by 0x804BD35: main (libcgrouptest01.c:286)
==14774==
==14774== Conditional jump or move depends on uninitialised value(s)
==14774==    at 0x4007285: strcpy (mc_replace_strmem.c:268)
==14774==    by 0x402F24B: cgroup_modify_cgroup (api.c:1012)
==14774==    by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889)
==14774==    by 0x804BD35: main (libcgrouptest01.c:286)
TEST10:PASS : cgroup_modify_cgroup()             Ret Value = 0
TEST11:PASS : cgroup_modify_cgroup()             Ret Value = 50007
TEST12:PASS : cgroup_new_cgroup()                Ret Value = 0
==14774==
==14774== Conditional jump or move depends on uninitialised value(s)
==14774==    at 0x4007271: strcpy (mc_replace_strmem.c:268)
==14774==    by 0x402F24B: cgroup_modify_cgroup (api.c:1012)
==14774==    by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889)
==14774==    by 0x804BDF3: main (libcgrouptest01.c:314)
==14774==
==14774== Conditional jump or move depends on uninitialised value(s)
==14774==    at 0x4007285: strcpy (mc_replace_strmem.c:268)
==14774==    by 0x402F24B: cgroup_modify_cgroup (api.c:1012)
==14774==    by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889)
==14774==    by 0x804BDF3: main (libcgrouptest01.c:314)
TEST13:PASS : cgroup_modify_cgroup()             Ret Value = 0
TEST14:PASS : cgroup_get_cgroup()                Ret Value = 50007       Parameter nullcgroup
TEST15:PASS : cgroup_get_cgroup()                Ret Value = 50002       Parameter not created group
TEST16:PASS : cgroup_get_cgroup()                Ret Value = 0
TEST 0:PASS : cgroup_new_cgroup()                Ret Value = 0
TEST 0:PASS : cgroup_create_cgroup()             Ret Value = 0   group found in filesystem
TEST17:FAIL : cgroup_get_cgroup()                Ret Value = 50017
TEST16:PASS : cgroup_delete_cgroup()             Ret Value = 0   Group deleted from filesystem
TEST17:PASS : cgroup_create_cgroup()             Ret Value = 50007
TEST18:PASS : cgroup_delete_cgroup()             Ret Value = 50007
TEST19:PASS : cgroup_compare_cgroup()            Ret Value = 50011       Parameter nullcgroup
TEST20:PASS : cgroup_compare_cgroup()            Ret Value = 0
TEST21:PASS : cgroup_compare_cgroup()            Ret Value = 50017
==14774==
==14774== ERROR SUMMARY: 45 errors from 10 contexts (suppressed: 18 from 1)
==14774== malloc/free: in use at exit: 0 bytes in 0 blocks.
==14774== malloc/free: 187 allocs, 187 frees, 234,711 bytes allocated.
==14774== For counts of detected errors, rerun with: -v
==14774== All heap blocks were freed -- no leaks are possible.
Cleanup done

Running third set of testcases
==============================
==14827== Memcheck, a memory error detector.
==14827== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
==14827== Using LibVEX rev 1804, a library for dynamic binary translation.
==14827== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==14827== Using valgrind-3.3.0, a dynamic binary instrumentation framework.
==14827== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==14827== For more details, rerun with: -v
==14827==
C:DBG: fs_mounted as recieved from script=2
C:DBG: mountpoint1 as recieved from script=/dev/cgroup_controllers-1
C:DBG: mountpoint2 as recieved from script=/dev/cgroup_controllers-2
sanity check pass. cgroup
TEST 1:PASS : cgroup_init()                      Ret Value = 0
TEST 2:PASS : cgroup_attach_task()               Ret Value = 0   Task found in group/s
TEST 1:PASS : cgroup_init()                      Ret Value = 0
TEST 2:PASS : cgroup_attach_task()               Ret Value = 0   Task found in group/s
TEST 3:PASS : cgroup_new_cgroup()                Ret Value = 0
TEST 4:PASS : cgroup_create_cgroup()             Ret Value = 0   group found in filesystem
TEST 5:PASS : cgroup_new_cgroup()                Ret Value = 0
TEST 6:PASS : cgroup_create_cgroup()             Ret Value = 0   group found in filesystem
TEST 7:PASS : cgroup_create_cgroup()             Ret Value = 0   group found in filesystem
TEST 8:PASS : cgroup_attach_task()               Ret Value = 0   Task found in group/s
TEST 9:PASS : cgroup_attach_task()               Ret Value = 0   Task found in group/s
TEST10:PASS : cgroup_new_cgroup()                Ret Value = 0
TEST11:PASS : cgroup_attach_task()               Ret Value = 50002       Parameter not created group
TEST12:PASS : cgroup_new_cgroup()                Ret Value = 0
==14827== Conditional jump or move depends on uninitialised value(s)
==14827==    at 0x4007271: strcpy (mc_replace_strmem.c:268)
==14827==    by 0x402F24B: cgroup_modify_cgroup (api.c:1012)
==14827==    by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889)
==14827==    by 0x804C1D6: main (libcgrouptest01.c:498)
TEST13:PASS : cgroup_modify_cgroup()             Ret Value = 0
TEST14:PASS : cgroup_new_cgroup()                Ret Value = 0
==14827==
==14827== Conditional jump or move depends on uninitialised value(s)
==14827==    at 0x4007271: strcpy (mc_replace_strmem.c:268)
==14827==    by 0x402F24B: cgroup_modify_cgroup (api.c:1012)
==14827==    by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889)
==14827==    by 0x804C23C: main (libcgrouptest01.c:519)
==14827==
==14827== Conditional jump or move depends on uninitialised value(s)
==14827==    at 0x4007285: strcpy (mc_replace_strmem.c:268)
==14827==    by 0x402F24B: cgroup_modify_cgroup (api.c:1012)
==14827==    by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889)
==14827==    by 0x804C23C: main (libcgrouptest01.c:519)
TEST15:PASS : cgroup_modify_cgroup()             Ret Value = 0
TEST16:PASS : cgroup_delete_cgroup()             Ret Value = 0   Group deleted from filesystem
TEST17:PASS : cgroup_delete_cgroup()             Ret Value = 0   Group deleted from filesystem
TEST18:PASS : cgroup_new_cgroup()                Ret Value = 0
TEST19:PASS : cgroup_create_cgroup()             Ret Value = 0   group found under both controllers
TEST20:PASS : cgroup_attach_task()               Ret Value = 0   Task found in group/s
TEST21:PASS : cgroup_new_cgroup()                Ret Value = 0
==14827==
==14827== Conditional jump or move depends on uninitialised value(s)
==14827==    at 0x4007271: strcpy (mc_replace_strmem.c:268)
==14827==    by 0x402F24B: cgroup_modify_cgroup (api.c:1012)
==14827==    by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889)
==14827==    by 0x804C464: main (libcgrouptest01.c:622)
==14827==
==14827== Conditional jump or move depends on uninitialised value(s)
==14827==    at 0x4007285: strcpy (mc_replace_strmem.c:268)
==14827==    by 0x402F24B: cgroup_modify_cgroup (api.c:1012)
==14827==    by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889)
==14827==    by 0x804C464: main (libcgrouptest01.c:622)
TEST22:PASS : cgroup_modify_cgroup()             Ret Value = 0   group modified under both controllers
TEST23:PASS : cgroup_delete_cgroup()             Ret Value = 0   Group deleted from filesystem
TEST 0:PASS : cgroup_new_cgroup()                Ret Value = 0
TEST 0:PASS : cgroup_create_cgroup()             Ret Value = 0   group found in filesystem
TEST24:FAIL : cgroup_get_cgroup()                Ret Value = 50018
==14827==
==14827== ERROR SUMMARY: 79 errors from 5 contexts (suppressed: 18 from 1)
==14827== malloc/free: in use at exit: 66,044 bytes in 15 blocks.
==14827== malloc/free: 196 allocs, 181 frees, 228,734 bytes allocated.
==14827== For counts of detected errors, rerun with: -v
==14827== searching for pointers to 15 not-freed blocks.
==14827== checked 6,381,180 bytes.
==14827==
==14827==
==14827== 66,044 (18,064 direct, 47,980 indirect) bytes in 4 blocks are definitely lost in loss record 1 of 3
==14827==    at 0x4004BA2: calloc (vg_replace_malloc.c:397)
==14827==    by 0x4030D9A: cgroup_new_cgroup (wrapper.c:28)
==14827==    by 0x8049656: new_cgroup(char*, char*, char*, int, int) (libcgrouptest01.c:1132)
==14827==    by 0x8049917: create_new_cgroup_ds(int, char const*, int, int) (libcgrouptest01.c:744)
==14827==    by 0x804C190: main (libcgrouptest01.c:485)
==14827==
==14827==
==14827== 20,980 bytes in 5 blocks are indirectly lost in loss record 2 of 3
==14827==    at 0x4004BA2: calloc (vg_replace_malloc.c:397)
==14827==    by 0x4030C2C: cgroup_add_value_string (wrapper.c:122)
==14827==    by 0x8048FDB: _ZL17add_control_valueP17cgroup_controllerPcS1_i (libcgrouptest01.c:1113)
==14827==    by 0x4030C2C: cgroup_add_value_string (wrapper.c:122)
==14827==    by 0x8048FDB: _ZL17add_control_valueP17cgroup_controllerPcS1_i (libcgrouptest01.c:1113)
==14827==    by 0x80496C9: new_cgroup(char*, char*, char*, int, int) (libcgrouptest01.c:1147)
==14827==    by 0x8049917: create_new_cgroup_ds(int, char const*, int, int) (libcgrouptest01.c:744)
==14827==    by 0x804C190: main (libcgrouptest01.c:485)
==14827==
==14827==
==14827== 27,000 bytes in 6 blocks are indirectly lost in loss record 3 of 3
==14827==    at 0x4004BA2: calloc (vg_replace_malloc.c:397)
==14827==    by 0x4030F4B: cgroup_add_controller (wrapper.c:62)
==14827==    by 0x80496AE: new_cgroup(char*, char*, char*, int, int) (libcgrouptest01.c:1144)
==14827==    by 0x8049917: create_new_cgroup_ds(int, char const*, int, int) (libcgrouptest01.c:744)
==14827==    by 0x804C190: main (libcgrouptest01.c:485)
==14827==
==14827== LEAK SUMMARY:
==14827==    definitely lost: 18,064 bytes in 4 blocks.
==14827==    indirectly lost: 47,980 bytes in 11 blocks.
==14827==      possibly lost: 0 bytes in 0 blocks.
==14827==    still reachable: 0 bytes in 0 blocks.
==14827==         suppressed: 0 bytes in 0 blocks.
Cleanup done
[root@gondor tests]#


Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com>


git-svn-id: 312abad21b46f471ee9c8bf93af65050a03353f9@300 4f4bb910-9a46-0410-90c8-c897d4f1cd53

rafalmiel/libcg,rafalmiel/libcg,rafalmiel/libcg,jrfastab/Linux-cgdcbxd,rafalmiel/libcg,jrfastab/Linux-cgdcbxd,jrfastab/Linux-cgdcbxd,jrfastab/Linux-cgdcbxd