PaulHowarth/Blog/2011-06-29

Wednesday 29th June 2011

Fedora Project

  • Updated libpng10 in all current releases to address 1-byte uninitialized memory reference in png_format_buffer() (CVE-2011-2501, related to CVE-2004-0421)

  • Updated perl-Perl-Critic in dist-f16-perl to run the author tests (and pull in the associated additional build requirements) if (and only if) the %perl_bootstrap macro is not defined

Local Packages

  • Updated libpng10 as per the Fedora version

  • Updated perl-Coro to 6.0:

    • Incompatible Change: unreferenced coro objects will now be destroyed and cleaned up automatically (e.g. async { schedule })

    • Implement a JIT compiler for part of the thread switch code, which gives a 50% speed improvement on threaded perls, and about 4% on non-threaded perls (so threaded perls now finally reach about half the speed of non-threaded perls)
    • Slightly modernise Coro::Intro, add section about rouse functions

    • Avoid DEFSV and ERRSV, giving another 10% improvement in thread switching

    • Coro::State->is_destroyed is now called is_zombie

    • Implement a Coro->safe_cancel method that might fail, but cancels in a "safer" way if it succeeds

    • Add preliminary support for DEBUGGING perls

    • Get rid of two hash-accesses when initialising a new Coro - this speeds up coro creation by almost a factor of two

    • Croak when a coro that is being cancelled tries to block (e.g. while executing a guard block), instead of crashing or deadlocking

    • Use a more robust and also faster method to identify Coro::State objects - speeds up everything a bit

    • Implement Coro->cancel in XS for a 20% speed improvement, and to be able to implement mutual cancellation

    • Speed up context switches by a percent or two by more efficiently allocating context stack entries
    • Implement Coro->join and Coro->on_destroy in XS for a speed-up and a reduction in memory use

    • Cancelling a coro while it itself is cancelling another coro is now supported and working, instead of triggering an assertion

    • Be a bit more crash-resistant when calling (buggy) on_destroy callbacks (best effort)

    • Move on_destroy into the slf_frame, to allow extension slf functions to have destructors

    • Get rid of coro refcounting - simply crash in other interpreter threads by nulling the pointers on clone

    • Simplify warn/die hook handling when loading Coro - the convoluted logic seems no longer to be necessary

    • Use libecb instead of our own home-grown gcc hacks

    • Document alternatives to Coro::LWP - please use them :)

    • Work around another mindless idiotic needless bug in openbsd/mirbsd's sigaltstack

  • I had to add a patch to remove a bit of CFI assembler code in coro.c for distributions that had too old a gcc/gas combination (anything older than Fedora 11)

  • Updated perl-IO-AIO to 3.92:

    • (libeio) work around a Linux (and likely FreeBSD and other kernels) bug where sendfile would not transfer all the requested bytes on large transfers, using a heuristic

    • Buggy sendfile caused aio_move/copy to sometimes fail for big files (fortunately it checks that the whole file has been transferred...)

    • Use libecb for higher performance and higher portability

    • (libeio) disable sendfile on darwin, it's too broken

    • Disable fork tests on !linux, as only linux supports mixing pthread and fork in perl

    • Document the fact that fork doesn't work any more when using this module, on anything !GNU/Linux

    • Increase timeout in t/04_fork.t, as too many CPAN-tester setups run on a 0.1 MHz cpu (or so)

  • Contrary to upstream's changelog, the header file ecb.h was still missing so I copied it over from the Coro 6.0 distribution by the same author so that the package would build (CPAN RT#69186)


Recent