[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: Error reporting capabilities for libxc

On Mon, Oct 23, 2006 at 03:04:41PM -0500, Anthony Liguori wrote:
> Daniel P. Berrange wrote:
> >I'm doing this on FC6 - the __thread annotation is the same approach
> >used in libc for the per-thread errno variable, hence why I chose it
> >try it initially. The version are:
> >
> >  glibc-2.5-3
> >  gcc-4.1.1-30
> >
> >  
> >>I've found in the past that __thread can have problems when using shared 
> >>libraries (the exact instance was a Python binding).
> >>    
> >
> >I've not explicitly tested this integrating with the python bindings
> >and ensuring the correct per-thread operation.
> >  
> Will the python bindings actually load?  In the past, I've not been able 
> to import a module that contains __thread variables.

Yes, that worked just fine. I tested using xend/xm to validate the saner
error handling behaviour for invalid kernels, eg

# xm create crash
Using config file "crash".
Error: [2, 'Invalid kernel', "Kernel ELF type '3' does not match Xen type '2'"]

# xm create crash
Using config file "crash".
Error: [2, 'Invalid kernel', "Kernel ELF architecture '3' does not match Xen 
architecture '62' (x86_64)"]

# xm create crash
Using config file "crash".
Error: [2, 'Invalid kernel', 'Not a valid ELF or raw kernel image']

Given the notes in the GCC docs about needing support from libdl.so,
libc.so & libthread.so I suspect one of the libraries in your stack
was not fully compliant with the __thread specs.

> >One further issue I've thought of is that the __thread annotation does
> >not provide any way to do cleanup when a thread exists. Fine if the
> >per-thread variable is a simple scalar, but not so good if its a char *
> >since I think it'll leak memory. So I think I may have no choice by to
> >re-write with pthread_getspecific(), since that allows registration
> >of a cleanup function to free memory.

|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.