Firefox/Thunderbird and SSL not working with libthread_xu

Matthew Dillon dillon at apollo.backplane.com
Mon Apr 14 06:14:46 PDT 2008


    I've found the problem.  What is happening is that firefox is 
    fork()ing and this is changing the pages the mutexes are waiting on
    in to copy-on-write.  The causes the page to be reassigned and 
    the original umtx_sleep() no longer matches the umtx_wakeup().

    I also found a couple of races in libthread_xu, but those weren't
    the main issue.

    The ktrace output was wrong, due to some issues with ktrace and
    multi-threaded programs.  It was calling umtx_wakeup().

    I am considering my options.  It can be solved fairly easily by
    polling the memory location once a second to catch COW's.  Unfortunately
    we can't really sleep on virtual addresses, since pages can be mapped
    and I really want the umtx*() calls to work with shared memory. 

    At the moment I do not have a clean solution but I will commit a fix
    later today even if it isn't perfect.

					-Matt
					Matthew Dillon 
					<dillon at backplane.com>





More information about the Bugs mailing list