Transient addition breaks backward compatibility

Hi folks. I have the following problem. I made some changes to a class and I have serialised objects created before the changes. I hoped that the changes I made would still be backwards compatable and that I would still be able to deserialise legacy objects.
I made the following changes...
added
private transient int _hashcode = 0;and
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
         ois.defaultReadObject();
         _hashcode = calcHashCode();
}The changes were motivated by some profiling using JIP which indicated that the hashCode method of my class was being called very repetitively outside of my control, and instead I decided to cache the hashcode instead of recalculating it.
Unfortunately however, now I get a java.io.StreamCorruptedException when I try to deserialise a Hashtable containing old objects of this class. Now, I know I can hack a fix into the code; however, I would love if someone could point out my stupidity and tell me why the class is no longer backwards compatable. Is the transient element an issue, or am I doing something stupid with the readObject method? The calcHashCode() method simply reinitialises the _hashcode field by calculating it's values from other fields.
Thanks.
B.T.W. I use
public static final long serialVersionUID = 1l;

I don't suppose anyone is waiting with baited breath on this one, but I finally got back to the problem today and realised that my equals method which I also changed was the problem.
I wanted to speed up the equals method by ONLY checking that the hashcodes (which I cached) were equal and was being naive assuming the hashcodes would be unique for the input string. However, had a look at the birthday problem and figured that after hashing ~77,163 entries over the 2^32 Integer range that you are 50% likely to get a hash collision. Didn't realise the number was so small.
Now I initially check the hashcodes in the equals methods and if they are the same, then I check the data. This should at least speed up common non-equals comparisons. Apparently there was a collision in the hashtable I had previously serialised, so the integrity of the serialised hashtable must've been screwed with; hence the exception. When there is a collision in the hashtable, it reverts to the equals method.
Things I learnt:
#1 - Hash collisions are more likely than I thought
#2 - Keep to the equals, hashCode and compareTo regulations
#3 - Changing such methods can screw with backwards compatability of serilialised objects, not only adding removing fields
New equals:
public boolean equals(Object o) {
         if (o==this)
              return true;
         else if (o instanceof Blah){
              Blah b = (Blah)o;
          return b._hashcode==_hashcode
               && (b._data==_data || b._data.equals(_data));
         else return false;
}

Similar Messages

  • Project Spartan policy on backwards compatability

    I originally posted this to another Microsoft forum (but the system won't let me link it, so just google a random sentence below if you want to find it). I guess it can only really be addressed by someone on the Spartan team or up their line of supervisors
    and a Microsoft Support Engineer suggested I post here instead. So:
    Hi. I'd like to know if Project Spartan's backwards compatability policy will be different from Internet Explorer's.
    Microsoft's general policy seems to be to go to great lengths to preserve backwards compatibility. (Raymond Chen's blog The Old New Thing has some great war stories about this.) For example, an IE 3 (Aug 1996) JavaScript quirk was that an array with a trailing
    comma was longer than one without. [1].length != [1,].length Changing this behavior to match other browsers and the ECMAScript standard would possibly break JavaScript that had been written to depend on it, so it still exists in in-use versions of IE.
    I understand why this policy exists and has been such a valuable business policy for Microsoft for decades. The situation is a bit different with a web browser, though, because the majority of third-party authors have to be compatible with browsers from
    multiple vendors rather than a single Microsoft platform like embedded browsers or locked-down corporate intranets (not that those groups are tiny!). The other browsers have a different policy and will break backwards compatibility to better match the specs
    (whether explicit or de facto). So the code I write to create websites quickly turns into “this works everywhere, except where you need this IE workaround”. I regularly encounter IE-only behaviors and bugs that I expect never to change, like recently finding
    that only IE is case-insensitive when scrolling an HTML5 page to an in-page identifier or anchor from the URL fragid.
    I've read a lot about the quality improvements planned for Spartan and I look forward to seeing a lot of these hairy old cross-browser differences get reconciled. But as a longtime developer I know no software is perfect and there will always be bugs. So
    my question is: will this be a one-time fix or will there be a new policy towards backwards compatibility? If it's the former, Spartan is the new IE, and I know this tune very well. If the latter, there's a little room for hope that it will be pleasant to
    work with.
    Thanks for your consideration, and good luck with your code.

    PU
    You can replace Http:// with Hxxp:// to put a link in until your account is verified.
    Your thread on Answers is here http://answers.microsoft.com/en-us/insider/forum/insider_internet-insider_spartan/project-spartan-policy-on-backwards-compatability/d25ff33b-aeed-40fb-802b-af25fb9d157c
    If you are being told you cant post a link, or embed a picture (or any other restriction) you just need to post to this thread saying your account has not been validated
    Look for the verify your account thread that is stuck to the top of the page.
    http://social.technet.microsoft.com/Forums/en-US/home?forum=reportabug
    Read more here http://social.technet.microsoft.com/Forums/windows/en-US/9fe32cfb-ed1c-4b9d-93d9-7ff32b0106a3/verify-your-account-16?forum=reportabug
    Wanikiya and Dyami--Team Zigzag

  • InDesign Backwards Compatibility in CS5 an MAJOR issue

    I am a print designer who works in InDesign. I bought CS3 Design Premium in late summer of 2008. Shortly thereafter CS4 came out, but after just having forked out a big chunk of change, I decided against upgrading to CS4 right away. Recently I considered upgrading but then heard CS5 was coming out so I decided to postpone the upgrade and wait for the new software. I've just checked out the trial version of CS5 InDesign and after speaking with Adobe Support have come to the conclusion that I can't upgrade to CS5. Why? BACKWARDS compatibility to CS3. The previously offered export features that supplied a path for backwards compatibility via an .inx file are gone.
    I design freelance for a lot of different customers and once the design is complete, I have to deliver the InDesign file along with all associated fonts ad images to my clients. Most of my clients are still on CS3. If I upgrade to CS5 I will instantly not be able to work for 2/3 of my clients, as I will have no means by which to save a file backwards to CS3. I was informed by Adobe support that I would need to buy CS4 and CS5, as I could save my CS5 file in the IDML format and open it in CS4 and then I could save the file from CS4 as an INX file and open that is CS3. ARE THEY INSANE??? First off that requires keeping 3 version of InDesign up and running on my machine all of the time and secondly, why should I have to buy CS4 when I'm paying an additional fee to upgrade to CS5 because I didn't upgrade from CS4? This is so screwed up that it has to be an oversight---please tell me there is a patch in the works!!!
    PS- I've never posted to a forum before, so if I have broken any rules of forum etiquette or offended in any way, I offer my apologies now and if I (and the Adobe Support staff I spoke to) have overlooked something, please enlighten me!

    Cynthia Ryan Graphic wrote:
    I am all for working with better workflow practices and I understand that saving files backwards is less than ideal but Adobe needs to look at the real world uses of their software as well. I have to work with firms that aren't upgrading now--especially with the economy we are now in--and most of the items I design for them are ads-- one page- nothing too complex--really nothing fancy. I obviously wouldn't save a book or a very complex document backwards in this way, but simple things have translated just fine in the past. In the real world we hit situations like this.
    I bought my software 21 months ago and in this time Adobe has expected me to upgrade twice--I haven't even finished expensing  the initial cost of the software on my books yet. Upgrading that often just can't happen in a small firm--it's prohibitively expensive for a one man shop.
    So now from what I understand, to do this properly, I am supposed to buy the upgrade and keep both versions running on my machine and track with every client which version of the software I need to be working in. What happens when I have to add an employee? I will have to buy the CS3 version of the software in addition to the CS5 Suite because otherwise we can't work on the same files. I'm finding this frustrating.
    Your suggestion of buying CS4 from Amazon is a good one. I will look into that further.
    DISCLAIMER: I'm an Adobe stockholder. REALITY: My holdings are probably in the same proportion as the number of bits it takes to store a period character (".") on an Internet server is to the entire Internet's storage capacity. So, while I may have some self-interest here, it's not driving me to encourage you - or even all the participants on this forum - to buy more software than you want to or need to.
    If you're simply interested in test-driving a new release, you can do that with the free 30-day trials. If you run out time, you can probably figure out a way to trick out your system to get another 30-day shot.
    However, if you use the software commercially - either to train others, or to create new material or revise old material for clients or employers - you need to decide if you can continue to do this with the software versions you own, or if the commercial needs will require you to license new versions.
    Regarding "expensing the initial cost of the software on my books" If I understand the US income-tax policies, purchases under a rather modest amount can usually be expensed in the year of purchase. If, because of your accounting method or preference, you're using a longer expensing time period, you might want to reevaluate your approach. If you attribute a portion of the software cost to each project you use it on, and, in this case, in 21 months your work hasn't let you recapture the investment, they you may want to use that information to decide how to pursue more paying for the software, or decline that stream of work and forgo upgrading.
    An alternate way to evaluate the software, especially as an employer of users, is to compare the product cost vs. how many more billable hours you and your workers can complete in a given time with it and without it, and, how competitively you can bid projects, due to the product's efficiency.
    HTH
    Regards,
    Peter
    Peter Gold
    KnowHow ProServices

  • Specific Flash Player 10 Backward Compatibility Issue

    There's an issue with backward compatibility on Flash Player
    10 that is breaking a lot of Flash content that was created with a
    tool that I develop and sell. It is to do with the way
    globalToLocal and localToGlobal handles NaN.
    I've reported it on the bugbase at
    https://bugs.adobe.com/jira/browse/FP-964
    There are more details here -
    http://www.questionwriterblog.com/archives/2008/11/scrollbar_causing_content_to_disappear. html
    The impact of the bug can be seen here.
    http://www.questionwriter.com/samples/fp10problem/v1perceptions.swf
    It is a serious enough backward compatibility issue, and
    doubtless affects other content too. I'm hoping for the outcome
    that the functionality will be restored in future player releases -
    but right now, can someone give me confirmation it is on the Flash
    Player team radar?

    bump!

  • Backward Compatibility

    Hi
    Our application is composed of few data layers. The layers comunicate through interfaces.
    My manager thinks that we should maintain backward compatibility between the layers.
    So:
    There is a defined functional interface "I".
    There is a layer component "L" which provides the functionality of I.
    There is a layer component "UL" which Uses L via I.
    A new layer component "L2" is created which has greater functionality than L and which it exposes via a new interface "I2".
    All the functions of I are also provided by I2. In other words, I is a subset of I2.
    "UL" will provide to a "layer factory" a version number, and the factory will return "L" or "L2" etc.
    This means that we cannot override methods, and difficult maintaining of code as well as code duplication.
    The bennefit of this is that all the components that worked fine with the previous "L" and were not changed, are guarantied to continue working, and needn't any QA.
    What do you think? Does it worth the trouble?
    Thanks,
    Libbhy

    libbysharf wrote:
    The bennefit of this is that all the components that worked fine with the previous "L" and were not changed, are guarantied to continue working, and needn't any QA.Based on what you have stated here, this is not necessarily the case. Just having the same method signatures doesn't not mean that it will work exactly the same way. Even if the methods from L are implemented in the exact same way in L2, you could have situations where the new L2 methods change the behavior of the old L methods.
    What do you think? Does it worth the trouble?Personally, I think it seems a little over-engineered. If you just add to a class, it will not break binary compatibility with existing clients. You'd be much better off spending time creating unit tests and regression test scripts and try to verify that the behaviors from the previous verison are maintained.

  • Known backwards compatibility issues between Robohelp 9 and Robohelp 8?

    Hi Group,
    In addition to avoiding the tasks in the Review menu, does anyone know of any other backwards compatibility issues encountered while opening and using files generated in RoboHelp 9 from within Robohelp 8? Thanks, gail

    Welcome to the forum.
    Simply the fact that RoboHelp 8 will not open a project that has been run in RoboHelp 9. Sure you might well open a project by deleting the CPD and perhaps the XPJ and using the HHP, however I would not recommend that except in an emergency.
    What I am not clear on is how you link that to "avoiding the tasks in the Review menu." What has that got to do with the question?
    See www.grainge.org for RoboHelp and Authoring tips
    @petergrainge

  • Backwards Compatability of iWeb?..Problems

    On my main mac pro, I have all the latest updates of software etc. and my new iweb site (which is published but not yet launched) works great in Firefox and Safari.
    BTW..I'm still in the 60 day trial period.
    On my older mac at my other desk, I'm running 10.3.9 with Netscape,Safari, and Internet Explorer, all of which are (i think) updated as far as they can go in 10.3.9.
    Problem: the site does not load and function properly on the older mac. Top menue bar is gone, and the photo gallery page comes up blank.
    What is the backwards compatability of this iWeb program?? MOST visiters to a site are NOT going to have the latest and greatest software. Plus, I have NO idea about PC's.
    This could be a deal breaker for anyone who wants to use .Mac in a more serious capacity.
    Any thoughts of ideas??
    Craig

    The 10.3.9 Safari version does not support a lot of the advanced code that Safari 2 creates. For those users I believe the latest Firefox browser will work for them. With the release of Leopard imminent 10.3 is getting left further and further behind.
    The latest Internet Explorer version does handle the iWeb 2 pages satisfactorily as I understand. You can go to http://ipinfo.info/netrenderer/ and past your site's URL into the URL field provided and see how the different versions of IE will render the page. I think it does a fair job in duplicating how it will look. But I don't have a PC to compare.

  • Property Based Rule - Backward compatibility

    We have the following structure in a Model.
    Decimal Feature A
    Decimal Feature B
    Option Feature C (min 0 , Max - no value)
    Option 1 - Property X : 100 , Prop Y : 200
    Option 2 - Property X : 200 , Prop Y : 300
    Option 3 - Property X : 300 , Prop Y : 400
    Option 4 - Property X : 400 , Prop Y : 500
    Option 5 - Property X : 500 , Prop Y : 600
    Options in 'Option Feature C' are being selected based upon values in Decimal Feat A and B. Example, if the user keys in a value between 200 to 300 in Decimal A , and a value between 300 to 400 in Decimal B, then thru property based rules Option 2 and Option 3 are selected automatically.
    Now along with the above logic we want an additional logic which enforces the backward compatibility too.
    i.e. if the user selects Option 2 and Option 3 then one of the decimal feature should have a value between 200 to 300 and another decimal deature should have a value between 300 to 400.
    Any thoughts on this can be done without using an extension ?
    If an extension is required then what can be the best approach to accomplish this.

    Hi Akhil -
    I am working on our forum backlog. Please let me know if this is still an issue for you.
    Regards,
    Daniel

  • Backwards Compatibility mapper module was not able to start

    Hi ,
    We have an issue with our SCOM 2012 agents not getting discovered because the Backwards Compatibility mapper module was not able to start.
    I checked few blogs and could see the remediation for SCOM 2007 SP1.
    http://blogs.msdn.com/b/mariussutara/archive/2008/03/11/backwards-compatibility-mapper-fails-to-start-event-on-opsmgr-2007-sp1.aspx
    These are in  the DMZ zone and are manually installed. i have bounced the health service folder as remediation but still looks the same.
    For test i have set the mssing NetBios name for the server and restarted the service. Still the server is not getting discovered and shows the below error.
    Log Name:      Operations Manager
    Source:        HealthService
    Date:          12/8/2014 6:13:23 PM
    Event ID:      1103
    Task Category: Health Service
    Level:         Warning
    Keywords:      Classic
    User:          N/A
    Computer:      Server.cc.domain
    Description:
    Summary: 1 rule(s)/monitor(s) failed and got unloaded, 1 of them reached the failure limit that prevents automatic reload. Management group "MG Group name". This is summary only event, please see other events with descriptions of unloaded rule(s)/monitor(s).
    Log Name:      Operations Manager
    Source:        Health Service Modules
    Date:          12/8/2014 6:13:23 PM
    Event ID:      10720
    Task Category: None
    Level:         Warning
    Keywords:      Classic
    User:          N/A
    Computer:      Server.cc.domain
    Description:
    The Backwards Compatibility mapper module was not able to start because discovery has not fully completed for this Health Service. This is a transient issue, the affected rule(s) will be unloaded and the Health Service will restart them when initialization
    is complete. 
    One or more workflows were affected by this.  
    Workflow name: System.Mom.BackwardCompatibility.ServiceStateMonitoring 
    Instance name: Server.cc.domain
    Instance ID: {E0B732FD-3908-E52B-2EAD-813F42F0C48E} 
    Management group: MG Group name
    Jesty Sam

    Hi Jesty,
    Based on the Article it seems to be for SCOM 2007 SP1.
    And as you mentioned you are using SCOM 2007 R2. I see that Microsoft has fixed this issue about the article you have mentioned above.
    Below is the article from MS for that.
    951380 Some
    computer properties for a cluster node may not be collected by the discovery process in System Center Operations Manager 2007 Service Pack 1
    Check the below link where MS has mentioned it has fixed this issue in SCOM 2007 R2.
    http://support.microsoft.com/kb/971410
    So i dont think it is necessary for
    you to install this Hotfix
    Gautam.75801

  • Backward compatibility of MS Flash object in Windows 8

    I have a case opened with Microsoft from Pfizer, Inc and need a case open with Adobe so that the MS engineers can communicate with Adobe within non-disclosure constraints.
    What MS needs from Adobe are debugging information the don't have in order to resolve the issue in their Win8 Flash object (15x).  MS will need to share with Adobe details and data that belong to Pfizer hence need to open that channel for those purposes and for MS to request technical information from Adobe.
    My MS case number is 114111712050982 so that you have that information and can share email addresses and phone numbers privately with Flash technical support.
    I have picked the best fit I could find for a community

    As a general rule, we'd highly recommend that everyone move from fscommand to ExternalInterface.  It's a superior replacement and eliminates some of the weird quirks that fscommand has.  In your situation, changes to IE11 caused backwards compatibility problems with fscommand, but ExternalInterface is unaffected.  We have some work in the pipeline to address the issue on IE11, but it has the potential to break existing content on configs that currently work, so we're trying to be really methodical about providing public pre-releases and soliciting feedback.  In 2014, the only high-traffic content that really uses fscommand are old enterprise applications, so it's hard for us to collect feedback or gauge the impact directly by looking at popular sites.
    We just handed a build off with the proposed fscommand changes to Microsoft for inclusion in the next Windows 10 technical preview.  We were soliciting feedback on any related fallout for Windows 7 users on our beta channel (http://www.adobe.com/go/flashplayerbeta); however, there's not a good way to provide a beta build for Windows 8 since Flash Player is a built-in component of IE.  We're working with Microsoft to establish a beta program for Flash Player in IE on Win8+.  If you have access to the Win10 Technical Preview builds, we'd encourage you to test any of your legacy systems that require Flash and give us feedback once the next update is available.
    The fact that introducing a proxy solves the problem intermittently is interesting.  I guess it could be some internal timing, or it might be that the proxy is masking a cross-domain policy issue or an SSL negotiation problem.  Have you guys tried with a Debugger version of Flash Player?  You might get some useful feedback, particularly if it's a policy file thing.
    Adobe Flash Player - Downloads
    Configure the debugger version of Flash Player
    You can turn on policy file logging by adding these to your mm.cfg.  They'll get logged to flashlog.txt:
    PolicyFileLog=1 # Enables policy file logging
    PolicyFileLogAppend=1 # Optional; do not clear log at startup

  • Sql server 2008 r2 backward compatibility to 2005

    I've been told to get the backward compatibility patch from sql server 2008 r2 to 2005.  I can't determine where to get the patch.  Additionally, I 've been told that it must be done in a particular order but I can't seem to find any information
    on the procedure to follow either.

    Hello,
    You will find it on the following URL. Click on detail and look for SQLServer2005_BC.msi.
    http://www.microsoft.com/en-us/download/details.aspx?id=27596
    Hope this helps.
    Regards,
    Alberto Morillo
    SQLCoffee.com

  • No Backward compatability?

    I just got burned , I updated to Muse 2014  on my work computer, did an update to my website, only to discover that my home pc (where I do a majority of my personal work) can't use the new version. Now my website is in limbo because I can't edit it from home anymore. Thanks for that, Adobe.

    Maker actually has developed os x drivers but only as a cursor- so the only thing I can do with this thing at the moment is thse same as my glide point, only now I get to use a stylus. The additional drivers I found are for a similar product- I bet the same product made for someone else- but they match the software that I have for my pc. So I know that they are available but not sure what would happen if I installed them. I would hate to be the person that forces a reinstall of a harddrive and all the software that entails. IT would not be happy.
    Don't take this personally, however, I am not happy with the mac -for what I need. It does not matter that it isa great graphics machine, I do hardly anything with pictures or movies or music with the computer. I do not and have never played games - that is what sony and nintendo and xbox are for. I teach physics and have been trying since August to adopt already available things, i.e java applet, a sql gradebook database, several other pieces of software, now this tablet as the final to the mac environment- most without success. Part of this is the lack of familiarity with the system., but part is apple's fault. There seems to be a lack of backward compatibility for software such that I need to run classic (a second operating system) to run some of the teaching software I use. How is this better that just one os that is backward compatible?
    These are not complaint but the facts of my experience with mac. I have to use it for work- we are the only building in the system that is mac so I need to use it unless I purchase my own laptop and have IT configure it for me for the school stuff.
    Thanks for your ear - well eyes.

  • My iPad 1 is now very unstable. Apps crash consistently, Mac Numbers/Pages etc incompatible with IOS 5.1 etc. There seems to be no backwards compatibility to iPad 1. Am I just supposed to throw it away? I have restored the iPOad and it has ample storage .

    My iPad 1 is very unstable. Many Apps simply crash after opening. There is ample storage available.I have restored the iPad twice now and still it is unstable.
    Is this a lack of backwards compatibility because no-one writes apps for IOS 51.1. and the original iPad anymore? not even Apple, as the documents and sheets I create on my Mac are incompatible with my iPad now.
    My naievete tells me that this is simply Apple expecting us to upgrade to later levels of hardware. If so, very disappointing for an Apple fan. Seems your App developer approvals (even your own apps) do no require compatibility with anything but IOS 6 or later.

    There are various things to make your iPad more stable. You can try deleting all apps from the multitasking bar; do a reset ie hold the power and home buttons simultaneously until the Apple logo appears; Settings > General > Reset all Settings.
    If you had the previous version of iPages (version 09) on your Mac before upgrading to Pages 5.2, your Mac should still have that version in Applications, which is still compatible with your version of Pages on your iPad.
    If you don't have that version, you can 'Export to Pages 09' which is still compatible with iOS 5.1.1.

  • An error occcurred on line 105 while executing script 'MOM Backward Compatibility Service State Monitoring Script"

    We've been getting the following error for some time now.
    An error occurred on line 105 while executing script 'MOM Backward Compatibility Service State Monitoring Script'
    Source: Microsoft VBScript runtime error
    Description: The remote server machine does not exist or is unavailable: 'GetObject'
    One or more workflows were affected by this.
    Workflow name: System.Mom.BackwardCompatibility.ServiceStateMonitoring
    Instance name: server.domain.local
    Instance ID: {INSTANCE}
    Management group: GROUP
    Unfortunately the instance in question has since been decommissioned and simply does not exist any more. 
    We're currently on a repeat count of over 350,000 and I would REALLY like to get it stopped. I've had a look at adding an override but that points to the management server rather than the instance itself.
    Does anyone have any suggestions?
    thanks in advance!

    Hi Steven,
    There are for option for us to override a monitor ot rule:
    For all objects of class:             
    Class            
    When you select this option for your override, the override settings apply to all objects in the class at which the rule or monitor is targeted.
    For a group            
    When you select this option for your override, the override settings apply only to members of the group. The rule or monitor without the override settings continues to apply to all objects in the targeted class except for those objects that are also members
    of the group used for the override.
    When you create a group, you save it to an unsealed management pack. However, an element in an unsealed management pack, such as an override, cannot reference an element in a different unsealed management pack, such as a group. If you are going to use a group
    to limit the application of an override, you must either save the group to the same unsealed management pack as the override, or you must seal the management pack that contains the group.
    For a specific object of class:             
    Class            
    When you select this option for your override, the override settings apply only to the specified object. The rule or monitor without the override settings continues to apply to all other objects in the targeted class.
    For all objects of another class            
    When you select this option for your override, the override settings apply only to objects of a class other than the targeted class. The rule or monitor without the override settings continues to apply to all objects in the targeted class.
    Did you try to override it for a specific object of class?
    Regards,
    Yan Li
    Regards, Yan Li

  • Adobe Acrobat -Create PDF 1.0 does not work in FireFox 4.How do i directly convert pages to PDF??Why is that your products are not backward compatable.U people are in the IT industry and should know this.Shame on You people.learn somthing form the IE team

    While Updating to Fire Fox 4. It said Adobe Acrobat -Create PDF 1.0 is not supported.How come 3.6 supports but not 4. I believe you people have never heard of the term "Backward Compatibility" .U people will loose your customer/support base if every new version doesn't support some existing stuff.

    '''Problem Solved FINALLY !'''
    Solution:
    I just updated my '''Adobe Acrobat X Pro''' to '''Version 10.1.0'''.By the way, I have to complain, Adobe is really slow in solving this problem...
    Here is the official link for the Adobe Acrobat update.[http://www.adobe.com/support/downloads/detail.jsp?ftpID=5135 <click me!>http://www.adobe.com/support/downloads/detail.jsp?ftpID=5135<click me!>]
    After update, the extention changed from "Adobe Acrobat -Create PDF 1.0" into "Adobe Acrobat - Create PDF 1.1". And the '''"Adobe Acrobat - Create PDF 1.1" is compatiable with the firefox 4.0.1'''. A screenshot is attached as a proof.

Maybe you are looking for