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]
-
TONYC TPF grant report #12
by Tony Cook