OK.. This looks harder than I thought, it needs some debugging. I looked at your code and logs and have some questions
1. I presume this line err = cgroup_get_cgroup(group0); fails for you 2. Your cgroup_config_load_config() has succeeded, which I thought was the original problem. If this step did succeed, what wa the mount hierarchy it created? a. I can see a reference to CPU/FREEZER being mounted together and groups rw/realtime/.. within that 3. Your sample seems to add more controllers than those that are mounted For step1, I would recommend freeing group0 after creation and do a cgroup_new_cgroup("grp_0"), don't add any controllers, then try to get the cgroup with the API Balbir Singh. On Wed, Dec 17, 2014 at 4:16 PM, Alexandre LAURENT <pro.laurent.alexan...@gmail.com> wrote: > No problem. > > Here the complete results from the tests available in libcgroups : > --- > grep: @abs_top_srcdir@/config.h: Aucun fichier ou dossier de ce type > > Running first set of testcases > ============================== > TEST 1:PASS : cgroup_init() Ret Value = 50001 > Warning: libcgroup is not initialized > 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 > > Running second set of testcases > ============================== > sanity check pass. cgroup > TEST 1:PASS : cgroup_attach_task() Ret Value = 50014 Parameter nullcgroup > found cpu in rw,relatime,memory,cpu > Found cgroup option rw,relatime,memory,cpu, count 0 > found memory in rw,relatime,memory,cpu > Found cgroup option rw,relatime,memory,cpu, count 1 > TEST 2:PASS : cgroup_init() Ret Value = 0 > TEST 3:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s > Warning: cannot write tid -1 to /dev/cgroup_controllers-1//tasks:Invalid > argument > TEST 4:PASS : cgroup_attach_task_pid() Ret Value = 50016 > TEST 5:PASS : cgroup_new_cgroup() Ret Value = 0 > setting /dev/cgroup_controllers-1/group1/cpu.shares to "260000", pathlen 43 > 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 > TEST 8:PASS : cgroup_modify_cgroup() Ret Value = 0 Parameter same cgroup > TEST 9:PASS : cgroup_new_cgroup() Ret Value = 0 > TEST10:PASS : cgroup_modify_cgroup() Ret Value = 0 > TEST11:PASS : cgroup_modify_cgroup() Ret Value = 50007 > TEST12:PASS : cgroup_new_cgroup() Ret Value = 0 > 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 > setting /dev/cgroup_controllers-1/group_a/cpu.shares to "260000", pathlen 44 > TEST 0:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem > TEST17:FAIL : cgroup_get_cgroup() Ret Value = 50017 > path is /dev/cgroup_controllers-1/group_a/ > parent's name is /dev/cgroup_controllers-1/group_a//.. > group name is group_a > parent's group name is . > Removing group cpu:group_a > TEST 0:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from > filesystem > path is /dev/cgroup_controllers-1/group1/ > parent's name is /dev/cgroup_controllers-1/group1//.. > group name is group1 > parent's group name is . > Removing group cpu:group1 > 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 > Cleanup done > > Running third set of testcases > ============================== > sanity check pass. cgroup > found cpu in rw,relatime,cpu > Found cgroup option rw,relatime,cpu, count 0 > found memory in rw,relatime,memory > Found cgroup option rw,relatime,memory, count 1 > 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 > setting /dev/cgroup_controllers-1/ctl1_group1/cpu.shares to "260000", > pathlen 48 > TEST 4:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem > TEST 5:PASS : cgroup_new_cgroup() Ret Value = 0 > setting /dev/cgroup_controllers-2/ctl2_group1/memory.limit_in_bytes to > "7000064", pathlen 59 > TEST 6:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem > setting /dev/cgroup_controllers-2/ctl2_group1/memory.limit_in_bytes to > "7000064", pathlen 59 > 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 > TEST13:PASS : cgroup_modify_cgroup() Ret Value = 0 > TEST14:PASS : cgroup_new_cgroup() Ret Value = 0 > TEST15:PASS : cgroup_modify_cgroup() Ret Value = 0 > path is /dev/cgroup_controllers-1/ctl1_group1/ > parent's name is /dev/cgroup_controllers-1/ctl1_group1//.. > group name is ctl1_group1 > parent's group name is . > Removing group cpu:ctl1_group1 > TEST16:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from > filesystem > path is /dev/cgroup_controllers-2/ctl2_group1/ > parent's name is /dev/cgroup_controllers-2/ctl2_group1//.. > group name is ctl2_group1 > parent's group name is . > Removing group memory:ctl2_group1 > TEST17:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from > filesystem > TEST18:PASS : cgroup_new_cgroup() Ret Value = 0 > setting /dev/cgroup_controllers-1/commongroup/cpu.shares to "260000", > pathlen 48 > 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 > TEST22:PASS : cgroup_modify_cgroup() Ret Value = 0 group modified under both > controllers > path is /dev/cgroup_controllers-1/commongroup/ > parent's name is /dev/cgroup_controllers-1/commongroup//.. > group name is commongroup > parent's group name is . > Removing group cpu:commongroup > path is /dev/cgroup_controllers-2/commongroup/ > parent's name is /dev/cgroup_controllers-2/commongroup//.. > group name is commongroup > parent's group name is . > Removing group memory:commongroup > TEST23:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from > filesystem > TEST 0:PASS : cgroup_new_cgroup() Ret Value = 0 > TEST24:PASS : cgroup_cgroup_add_controller() Ret Value = 0 > setting /dev/cgroup_controllers-1/group_a/cpu.shares to "260000", pathlen 44 > TEST 0:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem > TEST25:FAIL : cgroup_get_cgroup() Ret Value = 50018 > path is /dev/cgroup_controllers-1/group_a/ > parent's name is /dev/cgroup_controllers-1/group_a//.. > group name is group_a > parent's group name is . > Removing group cpu:group_a > path is /dev/cgroup_controllers-2/group_a/ > parent's name is /dev/cgroup_controllers-2/group_a//.. > group name is group_a > parent's group name is . > Removing group memory:group_a > TEST 0:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from > filesystem > Cleanup done > --- > > > Also, I have done this test program (also attached) : > --- > #include <iostream> > #include <unistd.h> > > #include <libcgroup.h> > > #define USE_CPU 0 > #define USE_BLKIO 0 > #define USE_MEMORY 0 > #define CGROUP_CONF_FILE "./cgconfig.conf" > > int main() > { > int err = 0; > cgroup* group0 = NULL; > cgroup_controller* grp0_cpu_ctrl = NULL; > cgroup_controller* grp0_memory_ctrl = NULL; > cgroup_controller* grp0_blkio_ctrl = NULL; > cgroup_controller* grp0_freezer_ctrl = NULL; > cgroup* group1 = NULL; > cgroup_controller* grp1_cpu_ctrl = NULL; > cgroup_controller* grp1_memory_ctrl = NULL; > cgroup_controller* grp1_blkio_ctrl = NULL; > cgroup_controller* grp1_freezer_ctrl = NULL; > > unsigned int i = 0; > char* freezerValue = NULL; > int64_t cpuValue = 0; > uint64_t memoryValue = 0; > > #if USE_CPU > fprintf(stdout, "Use cpu controller\n"); > #endif > #if USE_BLKIO > fprintf(stdout, "Use blkio controller\n"); > #endif > #if USE_MEMORY > fprintf(stdout, "Use memory controller\n"); > #endif > > err = cgroup_config_load_config (CGROUP_CONF_FILE); > if(err != 0) > { > fprintf(stderr,"Error with cgroup_load_config() function : > %s\n",cgroup_strerror(err)); > exit(EXIT_FAILURE); > } > > err = cgroup_init(); > if(err != 0) > { > fprintf(stderr,"Error with cgroup_init() function : > %s\n",cgroup_strerror(err)); > goto unload; > } > > // Create groups > group0 = cgroup_new_cgroup ("grp_0"); > if ( group0 == NULL ) > { > fprintf(stderr,"Error with cgroup_new_cgroup('grp_0') function : > %s\n",cgroup_strerror(err)); > goto clean_groups; > } > > // Place controler > // Group 0 > #if USE_CPU > grp0_cpu_ctrl = cgroup_add_controller (group0,"cpu" ); > if (grp0_cpu_ctrl == NULL ) > { > fprintf(stderr,"Error with cgroup_add_controller(group0,'cpu') > function : %s\n",cgroup_strerror(err)); > goto clean_ctrl; > } > #endif > > #if USE_BLKIO > grp0_blkio_ctrl = cgroup_add_controller (group0, "blkio"); > if (grp0_blkio_ctrl == NULL ) > { > fprintf(stderr,"Error with cgroup_add_controller(group0,'blkio') > function : %s\n",cgroup_strerror(err)); > goto clean_ctrl; > } > #endif > > grp0_freezer_ctrl = cgroup_add_controller (group0, "freezer"); > if (grp0_freezer_ctrl == NULL ) > { > fprintf(stderr,"Error with cgroup_add_controller(group0,'freezer') > function : %s\n",cgroup_strerror(err)); > goto clean_ctrl; > } > > #if USE_MEMORY > grp0_memory_ctrl = cgroup_add_controller (group0, "memory"); > if (grp0_memory_ctrl == NULL ) > { > fprintf(stderr,"Error with cgroup_add_controller(group0,'memory') > function : %s\n",cgroup_strerror(err)); > goto clean_ctrl; > } > #endif > > // Physically add cgroups > err = cgroup_create_cgroup (group0, 0); > if(err != 0) > { > fprintf(stderr,"Error with cgroup_create_cgroup(group0) function : > %s\n",cgroup_strerror(err)); > goto delete_groups; > } > > > > group1 = cgroup_new_cgroup("grp_1"); > if ( group1 == NULL ) > { > fprintf(stderr,"Error with cgroup_new_cgroup('grp_0') function : > %s\n",cgroup_strerror(err)); > goto clean_groups; > } > > // Group 1 > #if USE_CPU > grp1_cpu_ctrl = cgroup_add_controller (group1,"cpu" ); > if (grp1_cpu_ctrl == NULL ) > { > fprintf(stderr,"Error with cgroup_add_controller(group1,'cpu') > function : %s\n",cgroup_strerror(err)); > goto clean_ctrl; > } > #endif > > #if USE_BLKIO > grp1_blkio_ctrl = cgroup_add_controller (group1, "blkio"); > if (grp1_blkio_ctrl == NULL ) > { > fprintf(stderr,"Error with cgroup_add_controller(group1,'blkio') > function : %s\n",cgroup_strerror(err)); > goto clean_ctrl; > } > #endif > > grp1_freezer_ctrl = cgroup_add_controller (group1, "freezer"); > if (grp1_freezer_ctrl == NULL ) > { > fprintf(stderr,"Error with cgroup_add_controller(group1,'freezer') > function : %s\n",cgroup_strerror(err)); > goto clean_ctrl; > } > > #if USE_MEMORY > grp1_memory_ctrl = cgroup_add_controller (group1, "memory"); > if (grp1_memory_ctrl == NULL ) > { > fprintf(stderr,"Error with cgroup_add_controller(group1,'memory') > function : %s\n",cgroup_strerror(err)); > goto clean_ctrl; > } > #endif > > err = cgroup_create_cgroup (group1, 0); > if(err != 0) > { > fprintf(stderr,"Error with cgroup_create_cgroup(group1) function : > %s\n",cgroup_strerror(err)); > goto delete_groups; > } > > // We can start playing with cgroups > for (i = 0 ; i < 10 ; i++) > { > err = cgroup_get_cgroup(group0); > if ( err != 0 ) > { > fprintf(stderr,"Error with cgroup_get_cgroup(group0) function : %s > (error %d)\n",cgroup_strerror(err),err); > } > > err = cgroup_get_value_string(grp0_freezer_ctrl, "freezer.state", > &freezerValue); > if ( err != 0 ) > { > fprintf(stderr,"Error with cgroup_get_value_string(group0, > freezer.state) function : %s\n",cgroup_strerror(err)); > } > fprintf(stdout,"FREEZER value group0 : %s\n",freezerValue); > free(freezerValue); > > > #if USE_CPU > err = cgroup_get_value_int64(grp0_cpu_ctrl, "cpu.shares", &cpuValue); > if ( err != 0 ) > { > fprintf(stderr,"Error with cgroup_get_value_uint64(group0, > cpu.shares) function : %s\n",cgroup_strerror(err)); > } > fprintf(stdout,"CPU value group0 : %ld\n",memoryValue); > #endif > > #if USE_MEMORY > err = cgroup_get_value_uint64(grp0_memory_ctrl, "memory.failcnt", > &memoryValue); > if ( err != 0 ) > { > fprintf(stderr,"Error with cgroup_get_value_uint64(group0, > memory.failcnt) function : %s\n",cgroup_strerror(err)); > } > fprintf(stdout,"Memory value group0 : %ld\n",memoryValue); > > err = cgroup_get_value_uint64(grp1_memory_ctrl, "memory.failcnt", > &memoryValue); > if ( err != 0 ) > { > fprintf(stderr,"Error with cgroup_get_value_uint64(group1, > memory.failcnt) function : %s\n",cgroup_strerror(err)); > } > fprintf(stdout,"Memory value group1 : %ld\n",memoryValue); > #endif > > usleep(2000000); > } > > delete_groups: > if (group1) > { > err = cgroup_delete_cgroup (group1, 0); > } > if (group0) > { > err = cgroup_delete_cgroup (group0, 0); > } > clean_ctrl: > clean_groups: > if (group1) > { > cgroup_free(&group1); > } > if (group0) > { > cgroup_free(&group0); > } > > unload: > err = cgroup_config_unload_config(CGROUP_CONF_FILE, > CGFLAG_DELETE_IGNORE_MIGRATION); > if(err != 0) > { > fprintf(stderr,"Error with cgroup_config_unload_config() function : > %s\n",cgroup_strerror(err)); > exit(EXIT_FAILURE); > } > > return 0; > } > ---- > > It outputs this : > ---- > found cpu in rw,relatime,cpu > Found cgroup option rw,relatime,cpu, count 0 > found freezer in rw,relatime,freezer > Found cgroup option rw,relatime,freezer, count 1 > creating all cgroups now, error=0 > found cpu in rw,relatime,cpu > Found cgroup option rw,relatime,cpu, count 0 > found freezer in rw,relatime,freezer > Found cgroup option rw,relatime,freezer, count 1 > Changing ownership of /cgroup/freezer/grp_0/ > chown: path is /cgroup/freezer/grp_0/ > chown: seeing file /cgroup/freezer/grp_0/ > chown: seeing file /cgroup/freezer/grp_0/freezer.state > chown: seeing file /cgroup/freezer/grp_0/cgroup.clone_children > chown: seeing file /cgroup/freezer/grp_0/cgroup.event_control > chown: seeing file /cgroup/freezer/grp_0/notify_on_release > chown: seeing file /cgroup/freezer/grp_0/cgroup.procs > chown: seeing file /cgroup/freezer/grp_0/tasks > chown: seeing file /cgroup/freezer/grp_0/ > Warning: fts_read failed > chmod: path is /cgroup/freezer/grp_0/ > chmod: seeing file /cgroup/freezer/grp_0/ > chmod: seeing file /cgroup/freezer/grp_0/freezer.state > chmod: seeing file /cgroup/freezer/grp_0/cgroup.clone_children > chmod: seeing file /cgroup/freezer/grp_0/cgroup.event_control > chmod: seeing file /cgroup/freezer/grp_0/notify_on_release > chmod: seeing file /cgroup/freezer/grp_0/cgroup.procs > chmod: seeing file /cgroup/freezer/grp_0/ > Changing ownership of /cgroup/freezer/grp_1/ > chown: path is /cgroup/freezer/grp_1/ > chown: seeing file /cgroup/freezer/grp_1/ > chown: seeing file /cgroup/freezer/grp_1/freezer.state > chown: seeing file /cgroup/freezer/grp_1/cgroup.clone_children > chown: seeing file /cgroup/freezer/grp_1/cgroup.event_control > chown: seeing file /cgroup/freezer/grp_1/notify_on_release > chown: seeing file /cgroup/freezer/grp_1/cgroup.procs > chown: seeing file /cgroup/freezer/grp_1/tasks > chown: seeing file /cgroup/freezer/grp_1/ > Warning: fts_read failed > chmod: path is /cgroup/freezer/grp_1/ > chmod: seeing file /cgroup/freezer/grp_1/ > chmod: seeing file /cgroup/freezer/grp_1/freezer.state > chmod: seeing file /cgroup/freezer/grp_1/cgroup.clone_children > chmod: seeing file /cgroup/freezer/grp_1/cgroup.event_control > chmod: seeing file /cgroup/freezer/grp_1/notify_on_release > chmod: seeing file /cgroup/freezer/grp_1/cgroup.procs > chmod: seeing file /cgroup/freezer/grp_1/ > Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation > (error 50011) > Error with cgroup_get_value_string(group0, freezer.state) function : Cgroup, > requested group parameter does not exist > FREEZER value group0 : (null) > Error with cgroup_get_value_string(group0, freezer.state) function : Cgroup, > requested group parameter does not exist > FREEZER value group0 : (null) > Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation > (error 50011) > Error with cgroup_get_value_string(group0, freezer.state) function : Cgroup, > requested group parameter does not exist > FREEZER value group0 : (null) > Error with cgroup_get_value_string(group0, freezer.state) function : Cgroup, > requested group parameter does not exist > FREEZER value group0 : (null) > Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation > (error 50011) > Error with cgroup_get_value_string(group0, freezer.state) function : Cgroup, > requested group parameter does not exist > FREEZER value group0 : (null) > Error with cgroup_get_value_string(group0, freezer.state) function : Cgroup, > requested group parameter does not exist > FREEZER value group0 : (null) > Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation > (error 50011) > Error with cgroup_get_value_string(group0, freezer.state) function : Cgroup, > requested group parameter does not exist > FREEZER value group0 : (null) > Error with cgroup_get_value_string(group0, freezer.state) function : Cgroup, > requested group parameter does not exist > FREEZER value group0 : (null) > Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation > (error 50011) > Error with cgroup_get_value_string(group0, freezer.state) function : Cgroup, > requested group parameter does not exist > FREEZER value group0 : (null) > Error with cgroup_get_value_string(group0, freezer.state) function : Cgroup, > requested group parameter does not exist > FREEZER value group0 : (null) > path is /cgroup/freezer/grp_1/ > parent's name is /cgroup/freezer/grp_1//.. > group name is grp_1 > parent's group name is . > Removing group freezer:grp_1 > path is /cgroup/cpu/grp_0/ > parent's name is /cgroup/cpu/grp_0//.. > group name is grp_0 > parent's group name is . > Removing group cpu:grp_0 > path is /cgroup/freezer/grp_0/ > parent's name is /cgroup/freezer/grp_0//.. > group name is grp_0 > parent's group name is . > Removing group freezer:grp_0 > cgroup_config_unload_config: parsing ./cgconfig.conf > unmounting cpu > path is / > seeing file /cgroup/cpu/ > seeing file /cgroup/cpu/grp_1 > won't unmount cpu: hieararchy is not empty > unmounting freezer > path is / > seeing file /cgroup/freezer/ > seeing file /cgroup/freezer/release_agent > seeing file /cgroup/freezer/cgroup.clone_children > seeing file /cgroup/freezer/cgroup.event_control > seeing file /cgroup/freezer/notify_on_release > seeing file /cgroup/freezer/cgroup.procs > seeing file /cgroup/freezer/tasks > seeing file /cgroup/freezer/ > unmounting freezer at /cgroup/freezer > Error with cgroup_config_unload_config() function : Device or resource busy > ---- > > And finally, the strace of this program. > Strangely, running the program in strace brings a different result. > > ---- > > execve("./test", ["./test"], [/* 17 vars */]) = 0 > brk(0) = 0x237b000 > access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or > directory) > mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752b000 > access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or > directory) > open("/etc/ld.so.cache", O_RDONLY) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=134190, ...}) = 0 > mmap(NULL, 134190, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fdd5750a000 > close(3) = 0 > access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or > directory) > open("/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY) = 3 > read(3, > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220!\0\0\0\0\0\0"..., 832) = > 832 > fstat(3, {st_mode=S_IFREG|0644, st_size=31744, ...}) = 0 > mmap(NULL, 2128856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = > 0x7fdd57106000 > mprotect(0x7fdd5710d000, 2093056, PROT_NONE) = 0 > mmap(0x7fdd5730c000, 8192, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7fdd5730c000 > close(3) = 0 > access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or > directory) > open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY) = 3 > read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\\\0\0\0\0\0\0"..., > 832) = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=131107, ...}) = 0 > mmap(NULL, 2208672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = > 0x7fdd56eea000 > mprotect(0x7fdd56f01000, 2093056, PROT_NONE) = 0 > mmap(0x7fdd57100000, 8192, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7fdd57100000 > mmap(0x7fdd57102000, 13216, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdd57102000 > close(3) = 0 > access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or > directory) > open("/usr/lib/x86_64-linux-gnu/libstdc++.so.6", O_RDONLY) = 3 > read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\6\6\0\0\0\0\0"..., > 832) = 832 > fstat(3, {st_mode=S_IFREG|0644, st_size=991600, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd57509000 > mmap(NULL, 3171520, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = > 0x7fdd56be3000 > mprotect(0x7fdd56ccb000, 2097152, PROT_NONE) = 0 > mmap(0x7fdd56ecb000, 40960, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe8000) = 0x7fdd56ecb000 > mmap(0x7fdd56ed5000, 83136, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdd56ed5000 > close(3) = 0 > access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or > directory) > open("/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY) = 3 > read(3, > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360>\0\0\0\0\0\0"..., 832) = > 832 > fstat(3, {st_mode=S_IFREG|0644, st_size=530736, ...}) = 0 > mmap(NULL, 2625768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = > 0x7fdd56961000 > mprotect(0x7fdd569e2000, 2093056, PROT_NONE) = 0 > mmap(0x7fdd56be1000, 8192, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x80000) = 0x7fdd56be1000 > close(3) = 0 > access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or > directory) > open("/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY) = 3 > read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p.\0\0\0\0\0\0"..., > 832) = 832 > fstat(3, {st_mode=S_IFREG|0644, st_size=89056, ...}) = 0 > mmap(NULL, 2184824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = > 0x7fdd5674b000 > mprotect(0x7fdd56760000, 2097152, PROT_NONE) = 0 > mmap(0x7fdd56960000, 4096, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7fdd56960000 > close(3) = 0 > access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or > directory) > open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY) = 3 > read(3, > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\357\1\0\0\0\0\0"..., > 832) = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=1603600, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd57508000 > mmap(NULL, 3717176, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = > 0x7fdd563bf000 > mprotect(0x7fdd56541000, 2097152, PROT_NONE) = 0 > mmap(0x7fdd56741000, 20480, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x182000) = 0x7fdd56741000 > mmap(0x7fdd56746000, 18488, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdd56746000 > close(3) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd57507000 > mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd57505000 > arch_prctl(ARCH_SET_FS, 0x7fdd57505b40) = 0 > mprotect(0x7fdd56741000, 16384, PROT_READ) = 0 > mprotect(0x7fdd56be1000, 4096, PROT_READ) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd57504000 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd57503000 > mprotect(0x7fdd56ecb000, 32768, PROT_READ) = 0 > mprotect(0x7fdd57100000, 4096, PROT_READ) = 0 > mprotect(0x7fdd5730c000, 4096, PROT_READ) = 0 > mprotect(0x7fdd5752d000, 4096, PROT_READ) = 0 > munmap(0x7fdd5750a000, 134190) = 0 > set_tid_address(0x7fdd57505e10) = 8389 > set_robust_list(0x7fdd57505e20, 0x18) = 0 > futex(0x7fff3b48224c, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, > NULL, 7fdd57505b40) = -1 EAGAIN (Resource temporarily unavailable) > rt_sigaction(SIGRTMIN, {0x7fdd56eefad0, [], SA_RESTORER|SA_SIGINFO, > 0x7fdd56ef90a0}, NULL, 8) = 0 > rt_sigaction(SIGRT_1, {0x7fdd56eefb60, [], > SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fdd56ef90a0}, NULL, 8) = 0 > rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 > getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 > futex(0x7fdd56ee79e4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 > futex(0x7fdd56ee79f0, FUTEX_WAKE_PRIVATE, 2147483647) = 0 > brk(0) = 0x237b000 > brk(0x239c000) = 0x239c000 > open("./cgconfig.conf", O_RDONLY|O_CLOEXEC) = 3 > mmap(NULL, 319488, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd574b5000 > mmap(NULL, 319488, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd57467000 > ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff3b481710) = -1 ENOTTY > (Inappropriate ioctl for device) > fstat(3, {st_mode=S_IFREG|0644, st_size=184, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(3, "mount {\n# cpuset = /cgroup/cp"..., 8192) = 184 > read(3, "", 4096) = 0 > read(3, "", 8192) = 0 > ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff3b481710) = -1 ENOTTY > (Inappropriate ioctl for device) > close(3) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > stat("/cgroup/cpu", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > mount("cgroup", "/cgroup/cpu", "cgroup", 0, "cpu") = 0 > stat("/cgroup/freezer", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > mount("cgroup", "/cgroup/freezer", "cgroup", 0, "freezer") = 0 > open("/proc/cgroups", O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(3, "#subsys_name\thierarchy\tnum_cgrou"..., 1024) = 168 > read(3, "", 1024) = 0 > open("/proc/mounts", O_RDONLY|O_CLOEXEC) = 4 > fstat(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd57529000 > read(4, "rootfs / rootfs rw 0 0\nsysfs /sy"..., 1024) = 1024 > read(4, ",fd=13,pgrp=3146,timeout=300,min"..., 1024) = 162 > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 12), ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd57528000 > write(1, "found cpu in rw,relatime,cpu\n", 29) = 29 > write(1, "Found cgroup option rw,relatime,"..., 45) = 45 > write(1, "found freezer in rw,relatime,fre"..., 37) = 37 > write(1, "Found cgroup option rw,relatime,"..., 49) = 49 > read(4, "", 1024) = 0 > close(3) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > close(4) = 0 > munmap(0x7fdd57529000, 4096) = 0 > write(1, "creating all cgroups now, error="..., 34) = 34 > munmap(0x7fdd574b5000, 319488) = 0 > munmap(0x7fdd57467000, 319488) = 0 > open("/proc/cgroups", O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(3, "#subsys_name\thierarchy\tnum_cgrou"..., 1024) = 168 > read(3, "", 1024) = 0 > open("/proc/mounts", O_RDONLY|O_CLOEXEC) = 4 > fstat(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd57529000 > read(4, "rootfs / rootfs rw 0 0\nsysfs /sy"..., 1024) = 1024 > read(4, ",fd=13,pgrp=3146,timeout=300,min"..., 1024) = 162 > write(1, "found cpu in rw,relatime,cpu\n", 29) = 29 > write(1, "Found cgroup option rw,relatime,"..., 45) = 45 > write(1, "found freezer in rw,relatime,fre"..., 37) = 37 > write(1, "Found cgroup option rw,relatime,"..., 49) = 49 > read(4, "", 1024) = 0 > close(3) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > close(4) = 0 > munmap(0x7fdd57529000, 4096) = 0 > open("/proc/mounts", O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(3, "rootfs / rootfs rw 0 0\nsysfs /sy"..., 1024) = 1024 > read(3, ",fd=13,pgrp=3146,timeout=300,min"..., 1024) = 162 > close(3) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > mkdir("/cgroup", 0775) = -1 EEXIST (File exists) > mkdir("/cgroup/freezer", 0775) = -1 EEXIST (File exists) > mkdir("/cgroup/freezer/grp_0", 0775) = -1 EEXIST (File exists) > write(1, "Changing ownership of /cgroup/fr"..., 45) = 45 > write(1, "chown: path is /cgroup/freezer/g"..., 38) = 38 > lstat("/cgroup/freezer/grp_0/", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 42) = 42 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_0/", 0, 0) = 0 > open("/cgroup/freezer/grp_0/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = > 3 > getdents(3, /* 8 entries */, 32768) = 280 > getdents(3, /* 0 entries */, 32768) = 0 > close(3) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 55) = 55 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_0/freezer.state", 0, 0) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 63) = 63 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_0/cgroup.clone_children", 0, 0) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 62) = 62 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_0/cgroup.event_control", 0, 0) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 59) = 59 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_0/notify_on_release", 0, 0) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 54) = 54 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_0/cgroup.procs", 0, 0) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 47) = 47 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_0/tasks", 0, 0) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 42) = 42 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_0/", 0, 0) = 0 > write(1, "Warning: fts_read failed\n", 25) = 25 > write(1, "chmod: path is /cgroup/freezer/g"..., 38) = 38 > lstat("/cgroup/freezer/grp_0/", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 > write(1, "chmod: seeing file /cgroup/freez"..., 42) = 42 > open("/cgroup/freezer/grp_0/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = > 3 > getdents(3, /* 8 entries */, 32768) = 280 > getdents(3, /* 0 entries */, 32768) = 0 > close(3) = 0 > write(1, "chmod: seeing file /cgroup/freez"..., 55) = 55 > write(1, "chmod: seeing file /cgroup/freez"..., 63) = 63 > write(1, "chmod: seeing file /cgroup/freez"..., 62) = 62 > write(1, "chmod: seeing file /cgroup/freez"..., 59) = 59 > write(1, "chmod: seeing file /cgroup/freez"..., 54) = 54 > write(1, "chmod: seeing file /cgroup/freez"..., 42) = 42 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_0//tasks", 0, 0) = 0 > open("/proc/mounts", O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(3, "rootfs / rootfs rw 0 0\nsysfs /sy"..., 1024) = 1024 > read(3, ",fd=13,pgrp=3146,timeout=300,min"..., 1024) = 162 > close(3) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > mkdir("/cgroup", 0775) = -1 EEXIST (File exists) > mkdir("/cgroup/freezer", 0775) = -1 EEXIST (File exists) > mkdir("/cgroup/freezer/grp_1", 0775) = -1 EEXIST (File exists) > write(1, "Changing ownership of /cgroup/fr"..., 45) = 45 > write(1, "chown: path is /cgroup/freezer/g"..., 38) = 38 > lstat("/cgroup/freezer/grp_1/", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 42) = 42 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_1/", 0, 0) = 0 > open("/cgroup/freezer/grp_1/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = > 3 > getdents(3, /* 8 entries */, 32768) = 280 > getdents(3, /* 0 entries */, 32768) = 0 > close(3) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 55) = 55 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_1/freezer.state", 0, 0) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 63) = 63 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_1/cgroup.clone_children", 0, 0) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 62) = 62 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_1/cgroup.event_control", 0, 0) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 59) = 59 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_1/notify_on_release", 0, 0) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 54) = 54 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_1/cgroup.procs", 0, 0) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 47) = 47 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_1/tasks", 0, 0) = 0 > write(1, "chown: seeing file /cgroup/freez"..., 42) = 42 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_1/", 0, 0) = 0 > write(1, "Warning: fts_read failed\n", 25) = 25 > write(1, "chmod: path is /cgroup/freezer/g"..., 38) = 38 > lstat("/cgroup/freezer/grp_1/", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 > write(1, "chmod: seeing file /cgroup/freez"..., 42) = 42 > open("/cgroup/freezer/grp_1/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = > 3 > getdents(3, /* 8 entries */, 32768) = 280 > getdents(3, /* 0 entries */, 32768) = 0 > close(3) = 0 > write(1, "chmod: seeing file /cgroup/freez"..., 55) = 55 > write(1, "chmod: seeing file /cgroup/freez"..., 63) = 63 > write(1, "chmod: seeing file /cgroup/freez"..., 62) = 62 > write(1, "chmod: seeing file /cgroup/freez"..., 59) = 59 > write(1, "chmod: seeing file /cgroup/freez"..., 54) = 54 > write(1, "chmod: seeing file /cgroup/freez"..., 42) = 42 > getuid() = 0 > getgid() = 0 > chown("/cgroup/freezer/grp_1//tasks", 0, 0) = 0 > access("/cgroup/cpu/grp_0", F_OK) = -1 ENOENT (No such file or > directory) > access("/cgroup/freezer/grp_0", F_OK) = 0 > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > write(2, "Error with cgroup_get_cgroup(gro"..., 87) = 87 > write(2, "Error with cgroup_get_value_stri"..., 118) = 118 > write(1, "FREEZER value group0 : (null)\n", 30) = 30 > nanosleep({2, 0}, NULL) = 0 > access("/cgroup/cpu/grp_0", F_OK) = -1 ENOENT (No such file or > directory) > access("/cgroup/freezer/grp_0", F_OK) = 0 > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > open("/cgroup/freezer/grp_0/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = > 3 > getdents(3, /* 8 entries */, 32768) = 280 > stat("/cgroup/freezer/grp_0/freezer.state", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > open("/cgroup/freezer/grp_0/freezer.state", O_RDONLY|O_CLOEXEC) = 4 > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(4, "THAWED\n", 4096) = 7 > read(4, "", 4096) = 0 > close(4) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > stat("/cgroup/freezer/grp_0/cgroup.clone_children", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/cgroup.event_control", {st_mode=S_IFREG|0222, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/notify_on_release", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/cgroup.procs", {st_mode=S_IFREG|0644, st_size=0, > ...}) = 0 > stat("/cgroup/freezer/grp_0/tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > getdents(3, /* 0 entries */, 32768) = 0 > close(3) = 0 > write(1, "FREEZER value group0 : THAWED\n", 30) = 30 > nanosleep({2, 0}, NULL) = 0 > access("/cgroup/cpu/grp_0", F_OK) = -1 ENOENT (No such file or > directory) > access("/cgroup/freezer/grp_0", F_OK) = 0 > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > write(2, "Error with cgroup_get_cgroup(gro"..., 87) = 87 > write(2, "Error with cgroup_get_value_stri"..., 118) = 118 > write(1, "FREEZER value group0 : (null)\n", 30) = 30 > nanosleep({2, 0}, NULL) = 0 > access("/cgroup/cpu/grp_0", F_OK) = -1 ENOENT (No such file or > directory) > access("/cgroup/freezer/grp_0", F_OK) = 0 > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > open("/cgroup/freezer/grp_0/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = > 3 > getdents(3, /* 8 entries */, 32768) = 280 > stat("/cgroup/freezer/grp_0/freezer.state", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > open("/cgroup/freezer/grp_0/freezer.state", O_RDONLY|O_CLOEXEC) = 4 > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(4, "THAWED\n", 4096) = 7 > read(4, "", 4096) = 0 > close(4) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > stat("/cgroup/freezer/grp_0/cgroup.clone_children", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/cgroup.event_control", {st_mode=S_IFREG|0222, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/notify_on_release", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/cgroup.procs", {st_mode=S_IFREG|0644, st_size=0, > ...}) = 0 > stat("/cgroup/freezer/grp_0/tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > getdents(3, /* 0 entries */, 32768) = 0 > close(3) = 0 > write(1, "FREEZER value group0 : THAWED\n", 30) = 30 > nanosleep({2, 0}, NULL) = 0 > access("/cgroup/cpu/grp_0", F_OK) = -1 ENOENT (No such file or > directory) > access("/cgroup/freezer/grp_0", F_OK) = 0 > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > write(2, "Error with cgroup_get_cgroup(gro"..., 87) = 87 > write(2, "Error with cgroup_get_value_stri"..., 118) = 118 > write(1, "FREEZER value group0 : (null)\n", 30) = 30 > nanosleep({2, 0}, NULL) = 0 > access("/cgroup/cpu/grp_0", F_OK) = -1 ENOENT (No such file or > directory) > access("/cgroup/freezer/grp_0", F_OK) = 0 > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > open("/cgroup/freezer/grp_0/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = > 3 > getdents(3, /* 8 entries */, 32768) = 280 > stat("/cgroup/freezer/grp_0/freezer.state", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > open("/cgroup/freezer/grp_0/freezer.state", O_RDONLY|O_CLOEXEC) = 4 > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(4, "THAWED\n", 4096) = 7 > read(4, "", 4096) = 0 > close(4) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > stat("/cgroup/freezer/grp_0/cgroup.clone_children", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/cgroup.event_control", {st_mode=S_IFREG|0222, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/notify_on_release", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/cgroup.procs", {st_mode=S_IFREG|0644, st_size=0, > ...}) = 0 > stat("/cgroup/freezer/grp_0/tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > getdents(3, /* 0 entries */, 32768) = 0 > close(3) = 0 > write(1, "FREEZER value group0 : THAWED\n", 30) = 30 > nanosleep({2, 0}, NULL) = 0 > access("/cgroup/cpu/grp_0", F_OK) = -1 ENOENT (No such file or > directory) > access("/cgroup/freezer/grp_0", F_OK) = 0 > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > write(2, "Error with cgroup_get_cgroup(gro"..., 87) = 87 > write(2, "Error with cgroup_get_value_stri"..., 118) = 118 > write(1, "FREEZER value group0 : (null)\n", 30) = 30 > nanosleep({2, 0}, NULL) = 0 > access("/cgroup/cpu/grp_0", F_OK) = -1 ENOENT (No such file or > directory) > access("/cgroup/freezer/grp_0", F_OK) = 0 > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > open("/cgroup/freezer/grp_0/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = > 3 > getdents(3, /* 8 entries */, 32768) = 280 > stat("/cgroup/freezer/grp_0/freezer.state", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > open("/cgroup/freezer/grp_0/freezer.state", O_RDONLY|O_CLOEXEC) = 4 > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(4, "THAWED\n", 4096) = 7 > read(4, "", 4096) = 0 > close(4) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > stat("/cgroup/freezer/grp_0/cgroup.clone_children", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/cgroup.event_control", {st_mode=S_IFREG|0222, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/notify_on_release", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/cgroup.procs", {st_mode=S_IFREG|0644, st_size=0, > ...}) = 0 > stat("/cgroup/freezer/grp_0/tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > getdents(3, /* 0 entries */, 32768) = 0 > close(3) = 0 > write(1, "FREEZER value group0 : THAWED\n", 30) = 30 > nanosleep({2, 0}, NULL) = 0 > access("/cgroup/cpu/grp_0", F_OK) = -1 ENOENT (No such file or > directory) > access("/cgroup/freezer/grp_0", F_OK) = 0 > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > write(2, "Error with cgroup_get_cgroup(gro"..., 87) = 87 > write(2, "Error with cgroup_get_value_stri"..., 118) = 118 > write(1, "FREEZER value group0 : (null)\n", 30) = 30 > nanosleep({2, 0}, NULL) = 0 > access("/cgroup/cpu/grp_0", F_OK) = -1 ENOENT (No such file or > directory) > access("/cgroup/freezer/grp_0", F_OK) = 0 > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > open("/cgroup/freezer/grp_0/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = > 3 > getdents(3, /* 8 entries */, 32768) = 280 > stat("/cgroup/freezer/grp_0/freezer.state", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > open("/cgroup/freezer/grp_0/freezer.state", O_RDONLY|O_CLOEXEC) = 4 > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(4, "THAWED\n", 4096) = 7 > read(4, "", 4096) = 0 > close(4) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > stat("/cgroup/freezer/grp_0/cgroup.clone_children", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/cgroup.event_control", {st_mode=S_IFREG|0222, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/notify_on_release", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0/cgroup.procs", {st_mode=S_IFREG|0644, st_size=0, > ...}) = 0 > stat("/cgroup/freezer/grp_0/tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > getdents(3, /* 0 entries */, 32768) = 0 > close(3) = 0 > write(1, "FREEZER value group0 : THAWED\n", 30) = 30 > nanosleep({2, 0}, NULL) = 0 > write(1, "path is /cgroup/freezer/grp_1/\n", 31) = 31 > write(1, "parent's name is /cgroup/freezer"..., 43) = 43 > stat("/cgroup/freezer/grp_1/", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_1//..", {st_mode=S_IFDIR|0755, st_size=0, ...}) = > 0 > write(1, "group name is grp_1\n", 20) = 20 > write(1, "parent's group name is .\n", 25) = 25 > open("/cgroup/freezer/.//tasks", O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = > 3 > write(1, "Removing group freezer:grp_1\n", 29) = 29 > open("/cgroup/freezer/grp_1/tasks", O_RDONLY|O_CLOEXEC) = 4 > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(4, "", 4096) = 0 > close(4) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > rmdir("/cgroup/freezer/grp_1/") = 0 > close(3) = 0 > write(1, "path is /cgroup/freezer/grp_0/\n", 31) = 31 > write(1, "parent's name is /cgroup/freezer"..., 43) = 43 > stat("/cgroup/freezer/grp_0/", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 > stat("/cgroup/freezer/grp_0//..", {st_mode=S_IFDIR|0755, st_size=0, ...}) = > 0 > write(1, "group name is grp_0\n", 20) = 20 > write(1, "parent's group name is .\n", 25) = 25 > open("/cgroup/freezer/.//tasks", O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = > 3 > write(1, "Removing group freezer:grp_0\n", 29) = 29 > open("/cgroup/freezer/grp_0/tasks", O_RDONLY|O_CLOEXEC) = 4 > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(4, "", 4096) = 0 > close(4) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > rmdir("/cgroup/freezer/grp_0/") = 0 > close(3) = 0 > write(1, "cgroup_config_unload_config: par"..., 53) = 53 > open("./cgconfig.conf", O_RDONLY|O_CLOEXEC) = 3 > brk(0x23ed000) = 0x23ed000 > brk(0x243a000) = 0x243a000 > fstat(3, {st_mode=S_IFREG|0644, st_size=184, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(3, "mount {\n# cpuset = /cgroup/cp"..., 8192) = 184 > read(3, "", 4096) = 0 > read(3, "", 8192) = 0 > ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff3b481760) = -1 ENOTTY > (Inappropriate ioctl for device) > close(3) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > open("/proc/meminfo", O_RDONLY) = 3 > fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fdd5752a000 > read(3, "MemTotal: 16413660 kB\nMemF"..., 1024) = 1024 > close(3) = 0 > munmap(0x7fdd5752a000, 4096) = 0 > write(1, "unmounting cpu\n", 15) = 15 > write(1, "path is /\n", 10) = 10 > stat("/cgroup/cpu/", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 > write(1, "seeing file /cgroup/cpu/\n", 25) = 25 > open("/cgroup/cpu/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3 > getdents(3, /* 10 entries */, 32768) = 344 > stat("/cgroup/cpu/grp_1", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 > stat("/cgroup/cpu/cpu.shares", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > stat("/cgroup/cpu/release_agent", {st_mode=S_IFREG|0644, st_size=0, ...}) = > 0 > stat("/cgroup/cpu/cgroup.clone_children", {st_mode=S_IFREG|0644, st_size=0, > ...}) = 0 > stat("/cgroup/cpu/cgroup.event_control", {st_mode=S_IFREG|0222, st_size=0, > ...}) = 0 > stat("/cgroup/cpu/notify_on_release", {st_mode=S_IFREG|0644, st_size=0, > ...}) = 0 > stat("/cgroup/cpu/cgroup.procs", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > stat("/cgroup/cpu/tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > getdents(3, /* 0 entries */, 32768) = 0 > close(3) = 0 > write(1, "seeing file /cgroup/cpu/grp_1\n", 30) = 30 > write(1, "won't unmount cpu: hieararchy is"..., 43) = 43 > write(1, "unmounting freezer\n", 19) = 19 > write(1, "path is /\n", 10) = 10 > stat("/cgroup/freezer/", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 > write(1, "seeing file /cgroup/freezer/\n", 29) = 29 > open("/cgroup/freezer/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3 > getdents(3, /* 8 entries */, 32768) = 280 > stat("/cgroup/freezer/release_agent", {st_mode=S_IFREG|0644, st_size=0, > ...}) = 0 > stat("/cgroup/freezer/cgroup.clone_children", {st_mode=S_IFREG|0644, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/cgroup.event_control", {st_mode=S_IFREG|0222, > st_size=0, ...}) = 0 > stat("/cgroup/freezer/notify_on_release", {st_mode=S_IFREG|0644, st_size=0, > ...}) = 0 > stat("/cgroup/freezer/cgroup.procs", {st_mode=S_IFREG|0644, st_size=0, ...}) > = 0 > stat("/cgroup/freezer/tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > getdents(3, /* 0 entries */, 32768) = 0 > close(3) = 0 > write(1, "seeing file /cgroup/freezer/rele"..., 42) = 42 > write(1, "seeing file /cgroup/freezer/cgro"..., 50) = 50 > write(1, "seeing file /cgroup/freezer/cgro"..., 49) = 49 > write(1, "seeing file /cgroup/freezer/noti"..., 46) = 46 > write(1, "seeing file /cgroup/freezer/cgro"..., 41) = 41 > write(1, "seeing file /cgroup/freezer/task"..., 34) = 34 > write(1, "seeing file /cgroup/freezer/\n", 29) = 29 > write(1, "unmounting freezer at /cgroup/fr"..., 38) = 38 > umount("/cgroup/freezer", 0) = -1 EBUSY (Device or resource busy) > brk(0x23a0000) = 0x23a0000 > write(2, "Error with cgroup_config_unload_"..., 76) = 76 > exit_group(1) = ? > > > ---- > > -- > Alexandre LAURENT > > 2014-12-16 17:40 GMT+01:00 Balbir Singh <bsinghar...@gmail.com>: >> >> I'm afraid I've lost the logs (sorry, forced email cleanup). I >> remember seeing a rollback action because an action failed. Would you >> mind resending it? >> >> Balbir Singh. >> >> On Tue, Dec 16, 2014 at 9:50 PM, Alexandre LAURENT >> <pro.laurent.alexan...@gmail.com> wrote: >> > I have continued my investigation about this issue. >> > On all machines that I have access, with different kernels : 3.2, 3.5.5, >> > 3.14, I have always the same issue. >> > I am trying to run the tests available in libcgroups 0.41. TEST17 from >> > second pass and TEST25 from third pass are always failing. These tests >> > are >> > related to cgroup_get_cgroup(). >> > >> > Can you reproduce and investigate on this, please ? >> > >> > Best regards, >> > >> > >> > 2014-12-09 17:21 GMT+01:00 Alexandre LAURENT >> > <pro.laurent.alexan...@gmail.com>: >> >> >> >> Hello, >> >> >> >> I am attaching the strace from my program. >> >> This segment appears when I am calling cgroup_get_cgroup() : >> >> >> >> access("/cgroup/freezer/grp_1", F_OK) = 0 >> >> stat("/cgroup/freezer/grp_1//tasks", {st_mode=S_IFREG|0644, st_size=0, >> >> ...}) = 0 >> >> gettid() = 18300 >> >> write(2, "E1209 16:57:17.328337 18300 cgro"..., 108) = 108 >> >> >> >> (gettid() and write() calls are coming from my logger.) >> >> >> >> Thanks for your help, >> >> >> >> >> >> >> >> 2014-12-08 18:52 GMT+01:00 Balbir Singh <bsinghar...@gmail.com>: >> >>> >> >>> Thanks.. we need the strace logs for the run >> >>> >> >>> Balbir Singh. >> >>> >> >>> On Mon, Dec 8, 2014 at 10:34 PM, Alexandre LAURENT >> >>> <pro.laurent.alexan...@gmail.com> wrote: >> >>> > As far as I know, yes, it is compiled. Memory controller is normally >> >>> > mounted >> >>> > in /cgroup/ and all files are present. >> >>> > Here my kernel config : >> >>> > >> >>> > CONFIG_CGROUPS=y >> >>> > # CONFIG_CGROUP_DEBUG is not set >> >>> > CONFIG_CGROUP_FREEZER=y >> >>> > CONFIG_CGROUP_DEVICE=y >> >>> > CONFIG_CGROUP_CPUACCT=y >> >>> > CONFIG_CGROUP_MEM_RES_CTLR=y >> >>> > CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y >> >>> > # CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED is not set >> >>> > CONFIG_CGROUP_PERF=y >> >>> > CONFIG_CGROUP_SCHED=y >> >>> > CONFIG_BLK_CGROUP=y >> >>> > # CONFIG_DEBUG_BLK_CGROUP is not set >> >>> > CONFIG_NET_CLS_CGROUP=y >> >>> > >> >>> > If I disable memory controller everything will work fine with all >> >>> > other >> >>> > controllers. But, when enabling again memory controller, I have >> >>> > problems >> >>> > getting some files like freezer.state or memory.failctn. I guess >> >>> > this >> >>> > is >> >>> > because of the failure of cgroup_get_cgroup(). >> >>> > >> >>> > Am I missing something ? >> >>> > >> >>> > Best regards, >> >>> > >> >>> > >> >>> > 2014-12-08 11:32 GMT+01:00 Balbir Singh <bsinghar...@gmail.com>: >> >>> >> >> >>> >> On Mon, Dec 8, 2014 at 3:52 PM, Alexandre LAURENT >> >>> >> <pro.laurent.alexan...@gmail.com> wrote: >> >>> >> > Hello, >> >>> >> > >> >>> >> > I am using libcg 0.41 and Linux Kernel 3.2.0.4 (AMD 64) on Debian >> >>> >> > 7. >> >>> >> > When I am using memory controller (and some others) through the >> >>> >> > following >> >>> >> > config file : >> >>> >> > --- >> >>> >> > mount { >> >>> >> > cpu = /cgroup/cpu; >> >>> >> > freezer = /cgroup/freezer; >> >>> >> > net_cls = /cgroup/net_cls; >> >>> >> > blkio = /cgroup/blkio; >> >>> >> > memory = /cgroup/memory; >> >>> >> > } >> >>> >> > --- >> >>> >> > >> >>> >> > the cgroup_get_cgroup() function is returning an error "Cgroup >> >>> >> > invalid >> >>> >> > operation". >> >>> >> > The error seems to be emitted from cgroup_add_controller() which >> >>> >> > will >> >>> >> > return on this case : >> >>> >> > /* >> >>> >> > * Still not sure how to handle the failure here. >> >>> >> > */ >> >>> >> > for (i = 0; i < cgroup->index; i++) { >> >>> >> > if (strncmp(name, cgroup->controller[i]->name, >> >>> >> > sizeof(cgroup->controller[i]->name)) == 0) >> >>> >> > { >> >>> >> > return NULL; >> >>> >> > } >> >>> >> > } >> >>> >> > >> >>> >> > >> >>> >> > When commenting the memory controller line, the error disappear. >> >>> >> > I have also tried to output all debug messages available in >> >>> >> > libcg, >> >>> >> > but >> >>> >> > none >> >>> >> > of these seems related to this issue. >> >>> >> > >> >>> >> > What can cause this issue ? >> >>> >> >> >>> >> Is memory cgroup compiled? >> >>> >> >> >>> >> Balbir Singh. >> >>> > >> >>> > >> >> >> >> >> > ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk _______________________________________________ Libcg-devel mailing list Libcg-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libcg-devel