Change Log 5.10.11

From BOINC Wiki
Jump to: navigation, search

Change Log 5.10.11, July 2, 2007

  • Mac: Fix bugs when user chooses Quit from menubar icon menu and then cancels in confirmation dialog.
  • Mac: Modify XCode project not to copy header files into Manager bundle. (Both checked into boinc_core_release_5_10_8 and re-released in Mac 5.8.10)
  • client: Add logic to scheduler, etc. for systems which limit the number of shared memory segments per process and / or system-wide. Mac OS X has default limits of 8 shmem segments per process, 32 max system wide.
  • Don't treat failure to allocate & attach to shared memory as a computation error.
  • Destroy shared memory segments associated with all tasks which exit, not just those with a finished file. This frees up a segment for use by another task.
  • If we run out of shared memory, start a 10 second timer during which don't try to run tasks unless they are already attached to shared memory (suspended tasks left in memory qualify.)
  • If a task is waiting for shared memory to become available, display this in the Manager's tasks pane.
  • Added a new log flag stress_shmem_debug for testing scheduling logic when we run out of shared memory.
QUESTIONS for further development:
• Note that it is quite easy to run out of shared memory segments if the leave-suspended-tasks-in-memory option is set. (The shared memory channel must remain active for heartbeats and to tell the task when to resume.)
• Should we override this option if we run out of shared memory segments?
• What about tasks left in RAM because they don't checkpoint?
• If BOINC crashes, its shared memory is not removed. In some cases, when BOINC is relaunched it will use the same key and so can re-attach to the orphaned segments, but this won't always happen. This can cause problems with the system-wide limits. We can't mark the segment for removal when we create it, because doing so (by calling shmctl with IPC_RMID) would remove its key so the project application couldn't attach to it. But we could do this safely after the first successful response from the project application. Should we make this change?
  • Mac: Fix bugs in XCode script phases which create visible copyright and version strings in installer and uninstaller.
  • client: More scheduler tweaks for shared memory: clear retry_shmem_time when releasing shared memory, value of stress_shmem_debug log flag sets number of shared memory segments to make unavailable.
  • Fix bug: reversed comparison of retry_shmem_time.
  • DIAG: Visual Studio 2005 enforces parameter checking, and if a parameter is wrong it just terminates the process with a 0xc000000d. This is a shot in the dark but I think it is a good guess as to what is happening right now.
  • client: Problem: On Mac OS X and some other systems, shared memory segments remain allocated unless the owner has marked them for destruction with shmctl(id, IPC_RMID, 0), causing shared memory leaks if BOINC crashes or exits suddenly (e.g., due to being called with --exit_after_finish). But on Mac OS X and some other systems, this shmctl command also prevents any more processes from attaching.
Solution: Add code to delete_old_slot_dirs() to check for and delete the possible orphan shared memory segment at BOINC startup for each slot directories with an init_data.xml file.
  • WIN: Update 2003 project files
  • WIN: Re-introduce manifests for 2003 built files.
  • Mac: Update user-visible copyright dates from 2006 to 2007
  • MGR: Adjust menu names.