develooper Front page | perl.perl5.porters | Postings from September 2013

TONYC TPF grant report #12

From:
Tony Cook
Date:
September 19, 2013 00:08
Subject:
TONYC TPF grant report #12
Message ID:
20130919000843.GB26500@mars.tony.develop-help.com
[Hours]         [Activity]
2013/09/09      Monday
 2.08           #115928 - make _r versions of new drand48 functions, and
                re-work function/type names
 1.05           #115928 - fix canned config, testing threads, win32
 0.52           #117265 - rebase, retest and merge to blead
 1.55           #85228 - research waitpid, wait4, OS/2 EMX, changes,
                testing
=====
 5.20

2013/09/10      Tuesday
 0.75           #115928 - reentr clean up, comment
 0.77           #85228 - testing with -Ud_waitpid -Ud_wait4 and comment
 0.18           #79838 - resolve
 0.52           #119617 - comment
 2.28           #77680, DB::goto, patches
=====
 4.50

2013/09/11      Wednesday
 0.95           #119413 - apply to maint, perldelta and resolve
 0.63           #118091 - rebase, re-test and apply
 0.37           #88814 - test on openbsd 5.2
 0.73           #88814 - passed 250 runs on OpenBSD, test on linux,
                cygwin, start haiku
 0.27           #79074 - look at HeSVKEY_force() uses
 0.17           #88814 - push a skip on openbsd 5.2 and later
 2.40           #79074 - work up a test, try various approaches, comment
=====
 5.52

2013/09/12      Thursday
 1.05           #77308 - appears to work in blead, bisect, resolve
 0.18           #82194 - start a build loop to reproduce - no failure
                after 1041 runs
 1.05           #67298, #118843 - test on freebsd and cygwin, close the
                first, comment on the second
 1.67           #82922 - try to use systemtap with perl's dtrace
=====
 3.95

2013/09/13      Friday
 1.17           #115928 - rebase,re-test on Win32, 32-bit linux, 64-bit
                linux, apply
=====
 1.17

Which I calculate is 20.34 hours

Approximately 14 tickets were worked on, and 3 patches were
applied

This week I finally applied perl's new rand() implementation, avoiding
the portability issues of random number generators on various
platforms.  This does not provide a cryptographically usable rand(),
but means that some platforms now generate a large selection of random
numbers.  [perl #115928]

Perl's waitpid() has a long standing bug where waitpid(0,0) would
loop, using 100% CPU when $! was originally set to EINTR.  This was
caused by the internal waitpid() wrapper/emulation function wait4pid()
would immediately return with an error when supplied a process id of
zero, but *wouldn't* set errno.

For a POSIX waitpid(), a pid of 0 means to wait for any child within
the same process group.

To fix this I ended up moving the pid 0 check into the emulation code
(which can't wait for children in the same process group) and setting
errno, preventing the loop.  I ended up testing this by building on
Linux with d_waitpid and d_wait4 undefined, which passed all tests
except those that use WNOHANG, which the emulation code doesn't
handle.  [perl #85228]



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About