Sunday, March 31, 2013

Eclipse and WebKit on Ubuntu 64


Yes, Eclipse does crash sometimes, but we still love it, for some reason :)

If your crash report says something like:

# C  [libwebkitgtk-1.0.so.0+0x426915]  webkitWebViewRegisterForIconNotification+0xb5

then today is your lucky day. I have a solution for you.

First of all, about the problem

Looks like Eclipse does not play nice with libwebkitgtk-1.0, it wants libwebkitgtk-3. At least on Ubuntu 64. Most probably, you do have both of them installed, but for some reason Eclipse picks version 1 instead of version 3.

Solution

Well, first solution is quite obvious - remove bloody libwebkitgtk-1.0. Easy shortcut to happy place without any crashes. However, there is a small issue with that approach. If you do have  package installed, then probably there is a reason and you would have to remove some other packages that depend on libwebkitgtk-1.0. In my case, Gimp was the cornerstone. It does not work with libwebkitgtk-3.Too bad.

Second solution is a bit more sophisticated. It is the reason why I like Ubuntu and at the same time reason for many jokes and criticisms from other OS users. If something does not work the way we want - let's recompile it :D

If you take a look at WebKit source, you will notice that webkitWebViewRegisterForIconNotification is called only #if ENABLE(ICONDATABASE). What?! I'm getting crashes because of some icons?! I hardly care if I have those icons in my main browser, not speaking about browser integrated in Eclipse or Gimp. Let's kill icons!

I will not describe in details how to recompile the package, there are lot's of materials on that topic. When you get WebKit source, search Debian configuration files for keys that disable icon database. Unfortunately, there is trick. Looks like disabling of icon database was not tested by developers. There are some places in code that do not have correct compile instructions and will complain about missing methods. I suppose if you got to that point, then surrounding some lines of code with compiler instructions is not a problem for you :)

If it sounds too scary for you, here is my version of package.

Now you just have to install it: 

dpkg --install libwebkitgtk-1.0-0_1.10.0-0ubuntu1.1_amd64.deb

There is one issue with my package. I did not change version. When you install it, synaptic will show that there is an update available. Next time when you will install a bunch of updates - it will be replaced with the one from repository. Best solution is to use "lock version" in synaptic or something similar, but if custom package version is the same as version in repository - it will not help. This means that you would have to check the list of updates that you update manager is going to install and make sure that WebKit will not be updated. Ugly, but works, as a temporary solution. If you will compile own package - don't make my mistake - change version.

11 comments:

  1. This is a good article & good site.Thank you for sharing this article. It is help us following categorize:
    it consulting, retail, manufacturing, CRM, digital supply chain management, Delivering high-quality service for your business applications,
    Solutions for all Industries,
    Getting your applications talking is the key to better business processes,
    Rapid web services solutions for real business problems,
    Understanding Your Data is the Key to Good Decision-Making,
    Web-based Corporate Document Management System,
    Outsourcing Solution,
    Financial and Operations Business Intelligence Solution,

    prologic-corp

    ReplyDelete
  2. But isn't there a way of telling Eclipse to pick libwebkitgtk-3 instead?

    ReplyDelete
    Replies
    1. Hi, you can check this bug report https://bugs.eclipse.org/bugs/show_bug.cgi?id=392967. By the way, it says that bug is fixed already.

      Delete
  3. wow this work for me, thanks very much guy :)

    ReplyDelete
  4. Since Eclipse Kepler (4.3), you can tell SWT to load libwebkitgtk-3.0 by defining the SWT_GTK3 environment variable

    export SWT_GTK3=1

    This will eliminate most causes of crash that were experienced with 'libwebkitgtk-1.0' versions.

    In 4.3 SWT_GTK3 can take any value (only test is on existence). In 4.4 it is possible that the only meaningful value might be "1".

    ReplyDelete
    Replies
    1. Great news! Will test it and update blogpost.

      Delete
  5. Great post . It takes me almost half an hour to read the whole post. Definitely this one of the informative and useful post to me. Thanks for the share and plz visit my site Programming 21st and century provide offshore outsourcing service, freelance service, personal assistant,web development, customer service, marketing services.






    ReplyDelete
  6. Acetech IT consulting Company in Delhi offer the technical knowledge and can help your business get the most out of your technology. Why are Acetech IT consulting services truly the best? Visit Us to find out more.

    ReplyDelete
  7. Acetech IT consulting Company in Delhi offer the technical knowledge and can help your business get the most out of your technology. Why are Acetech IT consulting services truly the best? Visit Us to find out more.

    ReplyDelete
  8. Great post . Will test it and update blogpost.
    SEO

    ReplyDelete