JMM: legal to optimize non-volatile flag out of particular loop condition?

Does Java Memory Model allow JIT compiler to optimize non-volatile flag out of loop conditions in code like as follows...
class NonVolatileConditionInLoop {
  private int number;
  private boolean writingReady = true; // non-volatile, always handled inside synchronized block
  public synchronized void setNumber(int n) {
    while (!writingReady) { // non-volatile flag in loop condition
      try { wait(); }
      catch (InterruptedException e) { e.printStackTrace(); }
    this.number = n;
    this.writingReady = false;
    notifyAll();
  public synchronized int getNumber() {
    while (writingReady) { // non-volatile flag in loop condition
      try { wait(); }
      catch (InterruptedException e) { e.printStackTrace(); }
    this.writingReady = true;
    notifyAll();
    return number;
}...so that it will execute like this:
class NonVolatileConditionInLoopHacked {
  private int number;
  private boolean writingReady = true; // non-volatile, always handled inside synchronized block
  public synchronized void setNumber(int n) {
    if (!writingReady) { // moved out of loop condition
      while (true) {
        try { wait(); }
        catch (InterruptedException e) { e.printStackTrace(); }
    this.number = n;
    this.writingReady = false;
    notifyAll();
  public synchronized int getNumber() {
    if (writingReady) { // moved out of loop condition
      while (true) {
        try { wait(); }
        catch (InterruptedException e) { e.printStackTrace(); }
    this.writingReady = true;
    notifyAll();
    return number;
This question was recently discussed in [one of threads|http://forums.sun.com/thread.jspa?messageID=11001801#11001801|thread] at New To Java forum.
My take on it is that optimization like above is legal. From the perspective of single-threaded program, repeated checks for writingReady are redundant because it is not modified within the loop. As far as I understand, unless explicitly forced by volatile modifier (and in our case it is not), optimizing compiler "has a right" to optimize based on single-thread execution assumption.
Opposite opinion is that JMM prohibits such an optimization because methods containing the loop(s) are synchronized.

gnat wrote:
...so that it will execute like this:
class NonVolatileConditionInLoopHacked {
private int number;
private boolean writingReady = true; // non-volatile, always handled inside synchronized block
public synchronized void setNumber(int n) {
if (!writingReady) { // moved out of loop condition
while (true) {
try { wait(); }
catch (InterruptedException e) { e.printStackTrace(); }
this.number = n;
this.writingReady = false;
notifyAll();
public synchronized int getNumber() {
if (writingReady) { // moved out of loop condition
while (true) {
try { wait(); }
catch (InterruptedException e) { e.printStackTrace(); }
this.writingReady = true;
notifyAll();
return number;
This question was recently discussed in [one of threads|http://forums.sun.com/thread.jspa?messageID=11001801#11001801|thread] at New To Java forum.
My take on it is that optimization like above is legal. From the perspective of single-threaded program, repeated checks for writingReady are redundant because it is not modified within the loop. As far as I understand, unless explicitly forced by volatile modifier (and in our case it is not), optimizing compiler "has a right" to optimize based on single-thread execution assumption.
Opposite opinion is that JMM prohibits such an optimization because methods containing the loop(s) are synchronized.One of the problems with wait() and your the proposed optimization is that "interrupts and spurious wakeups are possible" from wait() . See [http://java.sun.com/javase/6/docs/api/java/lang/Object.html#wait()] Therefore your wait() would loop without checking if this optimization would occur and a interrupt or spurious wake-up happened. Therefore for this reason I do not believe writingReady would be rolled out of the loop. Also the code isn't even equivalent. Once all the threads wake-up due to the notifyAll() they would spin in the while(true) and wait() again. I don't think the JMM prohibits such an optimization because methods containing the loop(s) are synchronized, but because it contains a wait(). The wait() is kind of a temporary flow control escape out of the loop.
Example:
writingReady is true
Thread A calls getNumber(). It waits().
Thread B calls setNumber(). It calls notifyAll() and writingReady is now false;
Thread A wakes up in getNumber() and while(true) loop and waits again(). //Big problem.

Similar Messages

  • I am trying to print a PDF file to a legal size paper and I would like for it to fill up the page. How do I do this? I went into the settings and changed it from letter to legal, but it's still printing out the same size. Can someone help me, please?

    I am trying to print a PDF file to a legal size paper and I would like for it to fill up the page. How do I do this? I went into the settings and changed it from letter to legal, but it's still printing out the same size. Can someone help me, please?

    Are you trying to Print to PDF or are you trying to Print a PDF file to a physical printer?

  • Conditionally set GR and GR non-val flags in ECS

    In Extended Classic Scenario SAP apparently doesn't support changes to the GR or GR non-val flags on SRM and ERP purchase orders.
    Our business requires a goods reciept for items over a certain price.  Can anyone confirm SAP does not support this at all?  If they don't then is it safe to come up with my own solution?  Does anyone have a solution for this?
    Here is my initial thought on a potential solution:  We were going to put an enhancement on the ERP side to change the flags based on the PO price.  The enhancement code would run right after the SAP code which takes the flags from the standard ERP configuration.  Does this sound risky or can it cause unintended problems?

    Our business requires a goods reciept for items over a certain price. Can anyone confirm SAP does not support this at all?
    I am not aware that SAP does not support the change of these flags. However, some combinations of the flag settings are deemed incorrect so the system would automatically revert your changes if these combinations are detected.

  • True non-volatile ram - Yes or No?

    I have never been much of an Apple person so I am both amused and annoyed by the lack of information which ships with the Touch. The "available online" Features Guide is helpful but even it is lacking in many ways.
    Question: Does the Touch have true non-volatile ram? That is, if the device's battery becomes totally, completely, drained, will everything (music, photos, mail, contacts, etc) still exist in memory once it has been recharged? Or will the device need to be "restored" from the host PC?

    Hi iTouchMe,
    I do think so (however, I'm not 100% sure). Actually my battery drained completely once and I didn't lose any content.
    Hope this helps!
    !http://signatures.mylivesignature.com/54486/122/A57996D55BE7ABB4A67DE686D381A27 4.png!

  • Non-retriggerable one shot utilizing While Loop

    Hello,
    I would like to generate a non-retriggerable pulse (long - 5 to 10 minutes) from the rising edge of an asynchronous pulse (short - 1/2 to 1 sec). I do not want the short pulse to retrigger the long one. In fact if this happens I would like to flag it as an error.
    I am running LabVIEW 6i Real Time on an PXI-8170 controller with a 6071E DAQ board.
    I have a hardware timed 1ms While Loop that I would like to use for the timing. Can this be done without using Global or Local Variables? I have been trying to figure out a way to use shift resgistars to avoid the possibility of the "i" terminal rolling over.
    Any ideas, comments or suggestions much appreciated.
    Attached is my vi.
    Thanks
    Hans
    Attachments:
    DCPS_PROTO.vi ‏225 KB

    Hans,
    Unfortunately I wasn't able to open your VI but I will give you my suggestion anyway.
    As you probably have noticed, the counters are not capable of generating that long pulses, so that leaves you with the options of digital or analog output.
    The digital I/O on the E series devices doesn't support any handshaking, so you would have to generate a DAQ event from your trigger and then write to the port.
    You can trigger the analog output operation with a digital pulse and reset the output value when your timer loop reaches a certain value. You don't necessarily need to use a local variable to pass this information out of the loop (assuming you want to keep the loop iterating). The LabVIEW occurrence is a nice way to implement it (under Advanced -> Synch
    ronization palette).
    It's going to take almost 25 days for your iteration terminal to roll over at 1 ms iteration. When it does the output from the terminal stays at the maximum value, 2147483647. If this is a problem you can check for the terminal value and when you reach start counting the following iterations using a shift register.
    Kai

  • My iPod generation 6 160gb will not sync. iTunes says corrupt, won't restore just errors out and then loops the same messages.

    My iPod is corrupt according to iTunes, however it won't restore through iTunes either.  I've tried to reformat the drive.  Makes no difference.  I've tried to reformat after choosing disk manager, and again the same result.  The iPod takes forever to work through the reformatting process and I get the same message "Itunes has detected an iPod that appears to be corrupted. You may need to restore this iPod before it can be used with iTunes. You may also try disconnecting and reconnecting the iPod" and then my pc tells me to format the disk.
    It's so frustrating, is there a fix to this? It seems like the iPod could still function, but I'm missing the way to get out of this loop, please help me!

    Likely a hard drive fault, see the note that i wrote few years ago, hopefully it helps
    If a sad iPod icon or an exclamation point and folder icon appears on your iPod’s screen, or with sounds of clicking or HD whirring, it is usually the sign of a hard drive problem and you have the power to do something about it now. Your silver bullet of resolving your iPod issue – is to restore your iPod to factory settings.
    http://docs.info.apple.com/article.html?artnum=60983
    If you're having trouble, try these steps at different levels one at a time until the issue is resolved. These steps will often whip your iPod back into shape.
    Make sure you do all the following “TRYs”
    A. Try to wait 30 minutes while iPod is charging.
    B. Try another FireWire or USB through Dock Connector cable.
    C. Try another FireWire or USB port on your computer .
    D. Try to disconnect all devices from your computer's FireWire and USB ports.
    E. Try to download and install the latest version of iPod software and iTunes
    http://www.apple.com/itunes/download/
    For old and other versions of iPod updater for window you can get here
    http://www.ipodwizard.net/showthread.php?t=7369
    F. Try these five steps (known as the five Rs) and it would conquer most iPod issues.
    http://www.apple.com/support/ipod/five_rs/
    G. Try to put the iPod into Disk Mode if it fails to appear on the desktop
    http://docs.info.apple.com/article.html?artnum=93651
    If none of these steps address the issue, you may need to go to Intermediate level listed below in logical order. Check from the top of the lists to see if that is what keeping iPod from appearing on your computer in order for doing the Restore.
    Intermediate Level
    A. Try to connect your iPod with another computer with the iPod updater pre-installed.
    B. Still can’t see your iPod, put it in Disk Mode and connect with a computer, instead of doing a Restore on iPod Updater. Go and format the iPod instead.
    For Mac computer
    1. Open the disk utility, hope your iPod appears there (left hand side), highlight it
    2. Go to Tab “Partition”, click either “Delete” or “Partition”, if fails, skip this step and go to 3
    3. Go to Tab “Erase” , choose Volume Format as “MAC OS Extended (Journaled), and click Erase, again if fails, skip it and go to 4
    4. Same as step 3, but open the “Security Options....” and choose “Zero Out Data” before click Erase. It will take 1 to 2 hours to complete.
    5. Eject your iPod and do a Reset
    6. Open the iTunes 7 and click “Restore”
    For Window computer
    Go to folder “My Computer”
    Hope you can see your iPod there and right click on the iPod
    Choose “Format”. Ensure the settings are at “Default” and that “Quick Format” is not checked
    Now select “Format”
    Eject your iPod and do a Reset
    Open the iTunes 7 and click “Restore”
    In case you do not manage to do a “Format” on a window computer, try to use some 3rd party disk utility software, e.g.“HP USB Disk Storage Format Tool”.
    http://discussions.apple.com/thread.jspa?threadID=501330&tstart=0
    C. Windows users having trouble with their iPods should locate a Mac user. In many cases when an iPod won't show up on a PC that it will show up on the Mac. Then it can be restored. When the PC user returns to his computer the iPod will be recognized by the PC, reformatted for the PC, and usable again. By the way, it works in reverse too. A Mac user often can get his iPod back by connecting it to a PC and restoring it.
    Tips
    a. It does not matter whether the format is completed or not, the key is to erase (or partly) the corrupted firmware files on the Hard Drive of the iPod. After that, when the iPod re-connected with a computer, it will be recognized as an fresh external hard drive, it will show up on the iTunes 7.
    b. It is not a difficult issue for a Mac user to find a window base computer, for a PC user, if they can’t find any Mac user, they can go to a nearest Apple Shop for a favor.
    c. You may need to switch around the PC and Mac, try to do several attempts between “Format” and “Restore”
    http://discussions.apple.com/thread.jspa?messageID=2364921&#2364921
    Advance Level
    A. Diagnostic mode solution
    If you have tried trouble shooting your iPod to no avail after all the steps above, chances are your iPod has a hardware problem. The iPod's built-in Diagnostic Mode is a quick and easy way to determine if you have a "bad" iPod.
    You need to restart your iPod before putting it into Diagnostic Mode. Check that your hold switch is off by sliding the switch away from the headphone jack. Toggle it on and off to be safe.
    Press and hold the following combination of buttons simultaneously for approximately 10 seconds to reset the iPod.
    iPod 1G to 3G: "Menu" and "Play/Pause"
    iPod 4G+ (includes Photo, Nano, Video, and Mini): "Menu" and "Select"
    The Apple logo will appear and you should feel the hard drive spinning up. Press and hold the following sequence of buttons:
    iPod 1G to 3G: "REW", "FFW" and "Select"
    iPod 4G+ (includes Photo, Nano, Video, and Mini): "Back" and "Select"
    You will hear an audible chirp sound (3G models and higher) and the Apple logo should appear backwards. You are now in Diagnostic Mode. Navigate the list of tests using "REW" and "FFW". The scroll wheel will not function while in diagnostic mode. For further details on Diagnostic mode can be found at http://www.methodshop.com/mp3/ipodsupport/diagnosticmode/
    Try to do the 5in1, HDD R/W and HDD scan tests. Some successful cases have been reported after the running the few tests under the Diagnostic mode. In case it does not work in your case, and the scan tests reports show some errors then it proves your iPod has a hardware problem and it needs a repairing service.
    B. Format your iPod with a start disk
    I have not tried this solution myself, I heard that there were few successful cases that the users managed to get their iPod (you must put your iPod in disk mode before connecting with a computer) mounted by the computer, which was booted by a system startup disk. For Mac, you can use the Disk Utility (on the Tiger OS system disk), for PC user, you can use the window OS system disk. Try to find a way to reformat your iPod, again it does not matter which format (FAT32, NTFS or HFS+) you choose, the key is to erase the corrupted system files on the iPod. Then eject your iPod and do a Reset to switch out from Disk Mode. Reboot your computer at the normal way, connect your iPod back with it, open the iPod updater, and hopefully your iPod will appear there for the Restore.
    If none of these steps address the issue, your iPod may need to be repaired.
    Consider setting up a mail-in repair for your iPod http://depot.info.apple.com/ipod/
    Or visit your local Apple Retail Store http://www.apple.com/retail/
    In case your iPod is no longer covered by the warranty and you want to find a second repairing company, you can try iPodResQ or ifixit at your own risk
    http://www.ipodresq.com/index.php
    http://www.ifixit.com/
    Just in case that you are at the following situation
    Your iPod warranty is expired
    You don’t want to pay any service charges
    You are prepared to buy a new one
    You can’t accept the re-sell value of your broken iPod
    Rather than leave your iPod as paper-weight or throw it away.
    You can try the following, but again, only do it as your last resort and at your own risk.
    Warning !!!! – It may or may not manage to solve your problem, and with a risk that you may further damage your iPod, which end up as an expensive paper weight or you need to pay more higher repairing cost. Therefore, please re-consider again whether you want to try the next level
    Last Resort Level
    1. . Disconnecting the Hard Drive and battery inside the iPod – Warning !! Your iPod warranty will be waived once you open the iPod.
    In Hong Kong there are some electronic shops offering an iPod service for Sad iPod, the first thing they do is to open up the iPod’s case and disconnecting the battery and the Hard Drive from the main board of the iPod. Wait for 5-10 minutes and reconnecting them back. The reason behind which I can think of is to do a fully reset of a processor of the iPod. In case you want do it itself and you believe that you are good on fixing the electronics devices and have experience to deal with small bits of electronic parts, then you can read the following of how to open the iPod case for battery and HDD replacement (with Quicktimes)
    http://eshop.macsales.com/tech_center/index.cfm?page=Video/directory.html
    2.Press the reset button on the Hard Drive inside the iPod – Suggestion from Kill8joy
    http://discussions.apple.com/thread.jspa?messageID=2438774#2438774
    Have I tried these myself? No, I am afraid to do it myself as I am squeamish about tinkering inside electronic devices, I have few experiences that either I broke the parts (which are normally tiny or fragile) or failed to put the parts back to the main case. Therefore, I agree with suggestion to have it fixed by a Pro.
    2. Do a search on Google and some topics on this discussion forum about “Sad iPod”
    Exclamation point and folder and nothing else
    Spank your iPod
    http://www.youtube.com/watch?v=3ljPhrFUaOY
    http://discussions.apple.com/thread.jspa?messageID=3597173#3597173
    Exclamation point and folder and nothing else
    http://discussions.apple.com/thread.jspa?messageID=2831962#2831962
    What should I do with my iPod? Send it or keep it?
    http://discussions.apple.com/thread.jspa?threadID=469080&tstart=0
    Strange error on iPod (probably death)
    http://discussions.apple.com/thread.jspa?threadID=435160&start=0&tstart=0
    Sad Face on iPod for no apparent reason
    http://discussions.apple.com/thread.jspa?threadID=336342&start=0&tstart=0
    Meeting the Sad iPod icon
    http://askpang.typepad.com/relevant_history/2004/11/meeting_the_sad.html#comment -10519524
    Sad faced iPod, but my computer won’t recognize it?
    http://discussions.apple.com/thread.jspa?messageID=2236095#2236095
    iPod Photo: unhappy icon + warranty question
    http://discussions.apple.com/thread.jspa?messageID=2233746#2233746
    4th Gen iPod Users - are we all having the same problem?
    http://discussions.apple.com/message.jspa?messageID=2235623#2235623
    Low Battery, and clicking sounds
    http://discussions.apple.com/thread.jspa?messageID=2237714#2237714
    Sad faced iPod, but my computer won’t recognize it
    http://discussions.apple.com/thread.jspa?messageID=2242018#2242018
    Sad iPod solution
    http://discussions.apple.com/thread.jspa?threadID=412033&tstart=0
    Re: try to restore ipod and it says "can't mount ipod"
    http://discussions.apple.com/thread.jspa?threadID=443659&tstart=30
    iPod making clicking noise and is frozen
    http://discussions.apple.com/thread.jspa?messageID=2420150#2420150
    Cant put it into disk mode
    http://discussions.apple.com/thread.jspa?messageID=3786084#3786084
    I think my iPod just died its final death
    http://discussions.apple.com/thread.jspa?messageID=3813051
    Apple logo & monochrome battery stay
    http://discussions.apple.com/thread.jspa?messageID=3827167#3827167
    My iPod ism’t resetting and isn’t being read by my computer
    http://discussions.apple.com/thread.jspa?messageID=4489387#4489387
    I am not suggesting that you should follow as well, but just read them as your reference. You are the person to make the call.
    Finally, I read a fair comments from dwb, regarding of slapping the back of the iPod multiple times
    Quote “This has been discussed numerous times as a 'fix'. It does work, at least for a while. In fact I remember using the same basic trick to revive Seagate and Quantam drives back in the mid to late 1980's. Why these tiny hard drives go bad I don't know - could be the actuator gets stuck in place or misaligned. Could be the platter gets stuck or the motor gets stuck. 'Stiction' was a problem for drives back in the 80's. Unfortunately the fix can cause damage to the platter so we temporarily fix one problem by creating another. But I know of two instances where a little slap onto the table revived the iPods and they are still worked a year or more later.”UnQuote

  • Grey out a particular row in ALV based on some condition.

    Hi All,
    How can we grey out the particular row in ALV based on some condition( I am using the function modules and not OOPS).
    Regards
    Ramesh.

    Hello Ramesh
    In this case you need to add a specific field to your structure:
    TYPES: BEGIN OF ty_s_outtab.
    INLCUDE TYPE <my table or structure>.
    TYPES: CELLTAB   TYPE lvc_t_styl.  " name is arbitrary but this one is most frequently used
    TYPES: END OF ty_s_outtab.
    DATA: gt_outtab  TYPE STANDARD TABLE OF ty_s_outtab
                                 WITH DEFAULT KEY.
    You can use the fieldcatalog to make an entire column non-editable (LVC_S_FCAT-EDIT = ' ' ).
    However, in case of rows you need to inactivate all cells of this row. For sample coding please refer to thread:
    How to conditionally set ALV field as hotspot
    Regards
      Uwe

  • Flash player has been installed multiple time without errors but bbc news website and even flash player help say it isn't. How do i get out of this loop? - using windows 7 ultimate and latest IE11

    flash player has been installed multiple time without errors but bbc news website and even flash player help say it isn't. How do i get out of this loop? - using windows 7 ultimate and latest IE11

    I have had the same problem for WEEKS and I cannot access any sites that use Flash. Flash has been installed on this computer since I bought it in 2012. I have allowed auto updates but for weeks the updates never get past Step 2 - is this because I do NOT want the Google Tool bar? I use NO tool bars as there is only 6 inches of vertical screen space. Is this because I uncheck wanting Chrome as a default browser?  It is already installed, I just don't use it.  I came to this site and ran the check is it installed and the system says it is either not installed or not enabled. Version 14 just downloaded about 30 minutes ago - but did not progress to Step 3 although a pop up screen came up with a finish button, which I clicked. WHAT is the problem and how do I fix it?  If this were just a compatibility bug between IE11 and Adobe they have had plenty of time to fix it.
    Stephanie HC

  • How to find out that particular structure is used in which tables

    Hello Friends,
    Most of the times through techinal information we come to know the table name for a particular field.And in se16 when i give that table name than system says its structure and not the table.So in se11 when i give that structure name in database table field, its shows all the field in that structure, but not the data stored in that field.
    So my question is how to find out that particular structure is used in which tables,so that i can view data stored in that structure?
    Thanking you guys in advance.
    Regards,
    Jitendra

    Dear,
    When you click on the technical information it will give the structure name and field, double click on the structure and it will take you the display structure screen, there you will have the where-used List icon (Ctrl + Shift + F3) at the top , click on that and it will show the options, select Database tables and execute, it will give the tables related to the structure, you can explore the list of tables and find where your required field is stored in them.
    Thanks & Regards,
    Vijaya Bhaskar A

  • How to find out the  particular   form available language?

    hi ,
    how to find out the  particular   form available language?
    pls could u clirify the dought.
    regards
    eswar

    I guess you wrongly closed the thread without any answer.
    utilities --> version, it will give all the list of languages of SAPScript.
    Or goto SE71,
    Press F4, in place of form name and goto unclassified forms, you will see all form names with available languages.
    Regards,
    Sairam

  • How to grey out or deactivate the Conditions tab in VA01 and VA02

    Hi gurus,
    Is there a way I can grey out or deactivate the Conditions tab in VA01 or VA02?  Our objective is to attach the pricing conditons to the customer level and that no sales encoder can edit prices during encoding using t-codes VA01 and VA02?
    I also tried to solve my problem through authorization object of the user V_KONH_VKS - set to 3 (Display) but still the user was able to make revisions to the Conditions tab if he wants to.  This is an internal control issue  for our company.
    Thanks for the immediate response. 
    Frances

    Hello Francis,
    In the definition of condition types in SPRO ( T.code V/06) you can define whether a particular condition type ( example PR00) can be processed manually by the user. IF you select the option " No Manual entries" the system does not allow the users to change the condition value determined from the condition records ( Maintained in VK11).
    ALternately, if the business requirement is that of allowing a particular condition type ( example PR00) to be processed manually by the user in certain business scenarios and in others the value should not be editable then you can use the user exit in MV45AFZB " USEREXIT_SAVE_DOCUMENT". In this you can write the required logic with the help of a technical consultant.
    Hope this helps
    Warm Regards
    Prashant Joshi.

  • How to get out of for loop in eclipse debugging

    How to get out of for loop in eclipse debugging for java classes ?
    I am in a for loop in a code. i want to get out of it ...but how ?

    is changing the behaviour of a running class like that really going to be any use for debugging? what's the actual problem?

  • The icloud keeps asking for apple id but cannot get it out of the loop

    the icloud keeps asking for apple id but cannot get it out of the loop.  It will not let me delete or get to settings

    Perform a Reset... Try again...
    Reset  ( No Data will be Lost )
    Press and Hold the Sleep/Wake Button and the Home Button at the Same Time...
    Wait for the Apple logo to Appear...
    Usually takes about 15 - 20 Seconds... ( But can take Longer...)
    Release the Buttons...

  • How do you restore 15" MacBook Pro to out of the box condition?

    How do you restore 15" MacBook Pro to out of the box condition?

    By reading the instructions in the "More Like This" column over here.-------->

  • Sleep, Restart, Shutdown loop - how do I get out of this loop?

    I installed os X Panther on mom's older iMac.
    Tonight, when it's booted it comes up with "sleep, restart, shutdown" options.
    We've selected each of these 3 items, waited, then either woke it up, waited for it to restart, or restarted it from shutdown; however, again it will eventually show a screen that only allows her to select "sleep, restart, shutdown"
    How does she get out of this loop?
    Note: There is not option to cancel the screen that has "sleep, restart, shutdown."

    * http://kb.mozillazine.org/Software_Update (Software Update not working properly)
    It shouldn't be necessary to reboot the computer to complete an update.<br />
    Download a fresh copy of Firefox ([http://www.mozilla.com/firefox/all.html]) and do a reinstall of Firefox on top of the current version.<br />
    You may need to do a clean install:
    * Download a fresh Firefox copy from http://www.mozilla.com/firefox/all.html and save the file to the desktop.
    * Uninstall your current Firefox version and remove the Firefox program folder before installing that copy of the Firefox installer.
    * Don't remove personal data if you uninstall the current version.
    * It is important to delete the Firefox program folder to remove all the files and make sure that there are no problems with files that were leftover after uninstalling.
    Your bookmarks and other profile data are stored elsewhere (not in the Firefox program folder) and won't be affected by a reinstall, but make sure that you do not select to remove personal data if you uninstall Firefox.

Maybe you are looking for