After building 4.0rc0 overnight, on my laptop, I started make test the next morning. . I shutdown the laptop before completion as I had to rush out the door (suspend would have been a good idea...).
Regardless, I ended up with a temporary file structure with a number of spawned_processes files consisting of NULLs which triggers the bug as detailed below. Why is there NULLs instead of numeric string? <--rhetorical question $SAGE_BASE/sage-main/sage/interfaces/cleaner.py writes the PID Async I/O means the PID may or may not be written on a shutdown/power outage etc. Patch: (against 4.0rc0) # HG changeset patch # User Anthony David <ada...@adavid.com.au> # Date 1243176398 -36000 # Node ID 958178a11b9e809788f1eda0cc29107c456a1bbe # Parent b25ac645ae77e49db250243280eab38c2431937a Improve write assurance of spawned_processes file by local/bin/sage- cleaner diff -r b25ac645ae77 -r 958178a11b9e sage/interfaces/cleaner.py --- a/sage/interfaces/cleaner.py Thu May 21 07:10:11 2009 -0700 +++ b/sage/interfaces/cleaner.py Mon May 25 00:46:38 2009 +1000 @@ -28,6 +28,8 @@ return o = open(F,'w') o.write('%s %s\n'%(pid, cmd)) + o.flush() + os.fsync(f.fileno()) o.close() start_cleaner_if_not_running() Notes: - Linux carbonate 2.6.18-4-686 #1 SMP Mon Mar 26 17:17:36 UTC 2007 i686 GNU/Linux - Debian GNU/Linux 5.0 - tested patch with a shutdown during a make test, 82 spawned- processes files created. Successful sage-cleaner invocation on sage startup. - no tests yet on other OSes/arches etc - The sage-cleaner statement i=L.find(' ') in kill_spawned_jobs fails to find any spaces - could fix the above problem but it is better to attack the root cause, hence the patch to cleaner.py and not sage-cleaner - patch could be improved by creating a temporary file and them performing a rename after the close. - The debug print statements in sage-cleaner were uncommented to assist with defining the problem - Don't have access to TRAC - This is not a specific 4.0rc0 bug Bug: antho...@carbonate:~/sage-4.0.rc0$ ./sage ---------------------------------------------------------------------- | Sage Version 4.0.rc0, Release Date: 2009-05-21 | | Type notebook() for the GUI, and license() for information. | ---------------------------------------------------------------------- starting the cleaner sage: doing a cleanup checking on 4306 it is no longer running, so we clean up SAGE Cleaner: deleting /home/anthonyd/.sage//temp/carbonate//4306 checking on 4623 it is running checking on 31727 it is no longer running, so we clean up killing 31727's spawned jobs SAGE-Cleaner: trying to kill with parent 31727 Traceback (most recent call last): File "/home/anthonyd/sage-4.0.rc0/local/bin/sage-cleaner", line 108, in <module> while cleanup() > 0: File "/home/anthonyd/sage-4.0.rc0/local/bin/sage-cleaner", line 53, in cleanup if not e or (e and kill_spawned_jobs(spawned_processes, parent_pid)): File "/home/anthonyd/sage-4.0.rc0/local/bin/sage-cleaner", line 75, in kill_spawne\ d_jobs os.killpg(int(pid), 9) ValueError: invalid literal for int() with base 10: '' ... $ ls -laR /home/anthonyd/.sage/temp/carbonate/31727/ /home/anthonyd/.sage/temp/carbonate/31727/: total 12 drwxr-xr-x 3 anthonyd anthonyd 46 2009-05-24 06:58 . drwxr-xr-x 9 anthonyd anthonyd 12288 2009-05-24 22:26 .. drwxr-xr-x 2 anthonyd anthonyd 21 2009-05-24 06:58 interface -rw-r--r-- 1 anthonyd anthonyd 10 2009-05-24 06:58 spawned_processes /home/anthonyd/.sage/temp/carbonate/31727/interface: total 4 drwxr-xr-x 2 anthonyd anthonyd 21 2009-05-24 06:58 . drwxr-xr-x 3 anthonyd anthonyd 46 2009-05-24 06:58 .. -rw-r--r-- 1 anthonyd anthonyd 110 2009-05-24 06:58 tmp31727 od -xc /home/anthonyd/.sage/temp/carbonate/31727/spawned_processes 0000000 0000 0000 0000 0000 0000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0000012 -- Anthony David Gambling(n): A discretionary tax on those asleep during high school maths http://adavid.com.au/ --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---