Hi,

What about reverting the revert and then do something like following?

diff --git a/src/lxc/utils.c b/src/lxc/utils.c
index e00c47c..c94ee24 100644
--- a/src/lxc/utils.c
+++ b/src/lxc/utils.c
@@ -270,7 +270,11 @@ const char *lxc_global_config_value(const char
*option_name)
        }

        /* placed in the thread local storage pool */
+#ifdef IS_BIONIC
+       static const char *values[sizeof(options) / sizeof(options[0])] = { 0 };
+#else
        static __thread const char *values[sizeof(options) /
sizeof(options[0])] = { 0 };
+#endif
        const char *(*ptr)[2];
        const char *value;
        size_t i;

This solves both problem until we come up with a proper solution.


On Mon, Dec 23, 2013 at 1:29 PM, Serge Hallyn <[email protected]> wrote:
> Quoting Stéphane Graber ([email protected]):
>> On Mon, Dec 23, 2013 at 10:14:41AM -0600, Serge Hallyn wrote:
>> > Quoting Stéphane Graber ([email protected]):
>> > > On Mon, Dec 23, 2013 at 09:25:55AM -0600, Serge Hallyn wrote:
>> > > > Quoting Andrey Mazo ([email protected]):
>> > > > > Hi all,
>> > > > >
>> > > > > Sorry for coming too late to the discussion.
>> > > > > In fact, I've already acked [1] the changeset.
>> > > > > But after sleeping more on it, I'm concerned about __thread and 
>> > > > > bionic.
>> > > > > Quoting android-ndk-r9c/docs/text/system/libc/OVERVIEW.text:
>> > > > >   At the moment, thread-local storage defined through the __thread 
>> > > > > compiler
>> > > > >   keyword is not supported by the Bionic C library and dynamic 
>> > > > > linker.
>> > > > >
>> > > > > The same OVERVIEW.TXT was present until recently in bionic sources 
>> > > > > [2].
>> > > > > Moreover, grepping (today's git HEAD) bionic sources for __thread, 
>> > > > > PT_TLS (thread-local storage segment), .tbss and .tdata section 
>> > > > > names shows nothing.
>> > > > > So, while utils.c compiles fine (due to GNU gcc/binutils support for 
>> > > > > __thread), lxc-* will likely segfault on the first access to the 
>> > > > > "values" array (because of missing memory segment due to bionic 
>> > > > > dynamic loader's lack of __thread support).
>> > > > > I suppose, we could allocate a TLS slot for "values" pointer via 
>> > > > > pthread_key_create() and set it to a per-thread malloc()'ed memory 
>> > > > > chunk via pthread_setspecific(). (this seems to be quite verbose 
>> > > > > though)
>> > > >
>> > > > Stéphane, have you run lxc with this patch on android without
>> > > > passing -P (which should get the lxcpath from default values)?
>> > >
>> > > I'm unfortunately 7000km away from my LXC on Android hardware and will
>> > > only be able to test it on the 3rd of January.
>> >
>> > Should we revert the patch with a note to test on android on jan 4th?
>>
>> Since I just published a blog post telling people they can use LXC on
>> Android using current git head, that may be the safer course of action
>> indeed.
>
> Ok I've reverted that, let's test with it on android in two weeks.
>
> thanks,
> -serge
> _______________________________________________
> lxc-devel mailing list
> [email protected]
> http://lists.linuxcontainers.org/listinfo/lxc-devel



-- 
S.Çağlar Onur <[email protected]>
_______________________________________________
lxc-devel mailing list
[email protected]
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to