system() (from libpthread) doesn't call cleanup handler when statically linked

Carlos O'Donell carlos@systemhalted.org
Sat Jan 27 16:29:00 GMT 2007


On 1/22/07, Carmelo Amoroso <carmelo73@gmail.com> wrote:
> My proposal is:
> 1- make _pthread_cleanup_push_defer (and _pthread_cleanup_pop_restore)
> a global undefined in static build.
>
> 2- change system implementation (libpthread.a:pt-system.o)  simply including
> the source file "system.c" forcing _pthread_cleanup_push_defer to be
> resolved inside
> libpthread.a:cleanup_compat_defer.o
>
> 3- provide a stub implementation into libc.a for
> _pthread_cleanup_push_defer (and _pthread_cleanup_pop_restore) needed
> when -lpthread is not used
>
> Any comments are welcome.
> If you think I'm correct, I could try to post a full patch

This is more of a meta-comment. I'm not famliar enough with this
particular interface to comment on your analysis. If you believe your
analysis correct please try to work on the patch. After you have a
patch you should run the testsuite on i686 and sh, comparing the
results before and after your patch. All of this information gives the
reader more confidence in your analysis, and may sway a reader to do
their own independant verification.

Remember that the glibc community is made up of volunteers. These
volunteers make decisions about how best to spend their time. It's
difficult to allocate time to a an idea, that even the poster is
unsure, is correct.

Cheers,
Carlos.



More information about the Libc-alpha mailing list