<div dir="ltr">Uhh something is wrong with this commit (178938fe0ac891092205d76f67af855dcf7397af), both go bindings and some lxc tools started to seg fault <div><div>sudo lxc-ps</div><div>Segmentation fault (core dumped)</div>

<div>Segmentation fault (core dumped)</div><div>Segmentation fault (core dumped)</div><div>Segmentation fault (core dumped)</div><div>Segmentation fault (core dumped)</div><div>Segmentation fault (core dumped)</div><div>
Segmentation fault (core dumped)</div>
<div>Segmentation fault (core dumped)</div><div>Segmentation fault (core dumped)</div><div>Segmentation fault (core dumped)</div><div>CONTAINER   PID TTY          TIME CMD</div><div>          27168 pts/2    00:00:00 ps</div>

<div>          27169 pts/2    00:00:00 awk</div><div>          27061 pts/2    00:00:00 sudo</div><div>          27062 pts/2    00:00:00 lxc-ps</div></div><div><br></div><div>reverting 178938fe0a makes things OK again.</div>

</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Sep 24, 2013 at 7:46 PM, Serge Hallyn <span dir="ltr"><<a href="mailto:serge.hallyn@ubuntu.com" target="_blank">serge.hallyn@ubuntu.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Dwight Engen <<a href="mailto:dwight.engen@oracle.com">dwight.engen@oracle.com</a>><br>
<div class="im"><br>
Don't worry about saved_errno since none of the *_free routines will set it<br>
<br>
Signed-off-by: Dwight Engen <<a href="mailto:dwight.engen@oracle.com">dwight.engen@oracle.com</a>><br>
</div>Signed-off-by: Serge Hallyn <<a href="mailto:serge.hallyn@ubuntu.com">serge.hallyn@ubuntu.com</a>><br>
<div class="im">---<br>
 src/lxc/cgroup.c | 18 ++++++++++--------<br>
 1 file changed, 10 insertions(+), 8 deletions(-)<br>
<br>
diff --git a/src/lxc/cgroup.c b/src/lxc/cgroup.c<br>
</div>index 72abc2f..730d3b7 100644<br>
--- a/src/lxc/cgroup.c<br>
+++ b/src/lxc/cgroup.c<br>
@@ -296,7 +296,7 @@ static bool find_hierarchy_mountpts( struct cgroup_meta_data *meta_data, char **<br>
                return false;<br>
<div class="im"><br>
        while (getline(&line, &sz, proc_self_mountinfo) != -1) {<br>
-               char *token, *saveptr = NULL;<br>
+               char *token, *line_tok, *saveptr = NULL;<br>
                size_t i, j, k;<br>
                struct cgroup_mount_point *mount_point;<br>
                struct cgroup_hierarchy *h;<br>
</div>@@ -305,7 +305,7 @@ static bool find_hierarchy_mountpts( struct cgroup_meta_data *meta_data, char **<br>
<div class="im">                if (line[0] && line[strlen(line) - 1] == '\n')<br>
                        line[strlen(line) - 1] = '\0';<br>
<br>
-               for (i = 0; (token = strtok_r(line, " ", &saveptr)); line = NULL) {<br>
+               for (i = 0, line_tok = line; (token = strtok_r(line_tok, " ", &saveptr)); line_tok = NULL) {<br>
                        r = lxc_grow_array((void ***)&tokens, &token_capacity, i + 1, 64);<br>
                        if (r < 0)<br>
</div>                                goto out;<br>
@@ -477,6 +477,7 @@ struct cgroup_meta_data *lxc_cgroup_put_meta(struct cgroup_meta_data *meta_data)<br>
<div class="im">                        lxc_cgroup_hierarchy_free(meta_data->hierarchies[i]);<br>
        }<br>
        free(meta_data->hierarchies);<br>
+       free(meta_data);<br>
        return NULL;<br>
 }<br>
<br>
</div>@@ -1103,29 +1104,30 @@ char *lxc_cgroup_get_hierarchy_abs_path(const char *subsystem, const char *name,<br>
<div><div class="h5">        struct cgroup_process_info *base_info, *info;<br>
        struct cgroup_mount_point *mp;<br>
        char *result = NULL;<br>
-       int saved_errno;<br>
<br>
        meta = lxc_cgroup_load_meta();<br>
        if (!meta)<br>
                return NULL;<br>
        base_info = lxc_cgroup_get_container_info(name, lxcpath, meta);<br>
        if (!base_info)<br>
-               return NULL;<br>
+               goto out1;<br>
        info = find_info_for_subsystem(base_info, subsystem);<br>
        if (!info)<br>
-               return NULL;<br>
+               goto out2;<br>
        if (info->designated_mount_point) {<br>
                mp = info->designated_mount_point;<br>
        } else {<br>
                mp = lxc_cgroup_find_mount_point(info->hierarchy, info->cgroup_path, true);<br>
                if (!mp)<br>
-                       return NULL;<br>
+                       goto out3;<br>
        }<br>
        result = cgroup_to_absolute_path(mp, info->cgroup_path, NULL);<br>
-       saved_errno = errno;<br>
+out3:<br>
+       lxc_cgroup_process_info_free(info);<br>
+out2:<br>
        lxc_cgroup_process_info_free(base_info);<br>
+out1:<br>
        lxc_cgroup_put_meta(meta);<br>
-       errno = saved_errno;<br>
        return result;<br>
 }<br>
<br>
--<br>
</div></div>1.8.3.2<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
------------------------------------------------------------------------------<br>
October Webinars: Code for Performance<br>
Free Intel webinars can help you accelerate application performance.<br>
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from<br>
the latest Intel processors and coprocessors. See abstracts and register ><br>
<a href="http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk</a><br>
_______________________________________________<br>
Lxc-devel mailing list<br>
<a href="mailto:Lxc-devel@lists.sourceforge.net">Lxc-devel@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/lxc-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/lxc-devel</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>S.Çağlar Onur <<a href="mailto:caglar@10ur.org">caglar@10ur.org</a>>
</div>