8000 Eclipse 2025-06 fails to start if CodeTogether's devstyle Darkest Dark theme is installed · Issue #310 · eclipse-packaging/packages · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Eclipse 2025-06 fails to start if CodeTogether's devstyle Darkest Dark theme is installed #310

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
jonahgraham opened this issue May 22, 2025 · 43 comments

Comments

@jonahgraham
Copy link
Contributor

This is a more suitable location to discuss the issues raised in eclipse-cdt/cdt#1164 - here is just a summary.

If you install devstyle Darkest Dark theme in Eclipse IDE 2025-06 the IDE will fail to start due to some byte-code manipulation that the plug-in does that breaks Eclipse startup.

While this problem is not a bug in Eclipse or its projects, the theme is one of the most popular plug-ins on the Eclipse marketplace, with probably 10s of thousands of installs that will be broken if they updated to latest Eclipse release in June. Therefore the damage to Eclipse's users will be large.

Therefore we will need to figure out how to mitigate this for our users. I have reached out to genuitec (see emails in eclipse-cdt/cdt#1164) but as of now they have not proposed a solution and there is very little time to resolve this.

Possible ways forward are:

  1. Revert changes in Eclipse Platform that expose devstyle bug.
    This is undesirable as it is not obvious exactly how widespread these reversions may have to be, not how long Eclipse non-API would be held back.
  2. Make Eclipse more resiliant to such changes.
    I don't know if this is feasible, the way that devstyle is byte manipulating and weaving seems very difficult to insulate against
  3. Publicizing campaign.
    We can just try to publicize this, but the workaround for users if they end up with a broken install is non-trivial to do. Since the IDE won't start you can't simply undo the faulty install. The reality is that most people won't pay attention until they have a broken IDE
  4. Add negative p2 requirements preventing the problematic versions of devstyle from being installed at the same time as Eclipse 2025-06.
    this will prevent users from installing specific version of devstyle into 2025-06, or prevent Eclipse 2025-03 with devstyle installed from upgrading to 2025-06. The p2 UI here isn't particularly clear as to why the install is being prevented

I solicit input from the community on what to do here. There is not much time to resolve this, if any change needs to be made in Eclipse Platform we have less than 1 week to come up with a solution.

@jonahgraham
Copy link
Contributor Author

PS. Option 5 is to do nothing, but that seems a rather undesirable outcome to me.

@HannesWell
Copy link
Contributor

Thanks for taking care of this issue.

My personal opinion would be a combination of Option 3 and 4. As option 4 it only requires a little technical change and making it public will (hopefully) explain why an update does not happen and will also increase the pressure on Genuitec to fix this issue in their code. But all of this should be communicated to Genuitec in advance to make clear to them that currently it looks like the situation will be really bad, for their free users and paying customers. Hopefully this convinces them to handle this issue with priority.

Btw. do you or anybody else know anybody in the Eclipse developer community who works there that we can contact?

@akurtakov
Copy link
Contributor

Option 3 is the most important long term one. If it means naming a plugin and pointing to it as an example "HOW NOT TO DO THINGS" so be it. Short term fix could be even explicitly blocking/removing devstyle plugin (might be simpler than trying to explain things via the p2 ui).

@iloveeclipse
Copy link

As option 4 it only requires a little technical change

Could you please push a PR with the proposed change.
Agree with Alex, option 4 is what we can do now for 4.36.

@merks
Copy link
Contributor
merks commented May 22, 2025

FYI, this is the stack trace that I get:

java.lang.NoClassDefFoundError: org/eclipse/jface/resource/FileImageDescriptor
        at org.eclipse.ui.internal.BrandingProperties.getImages(BrandingProperties.java:113)
        at org.eclipse.ui.internal.ProductProperties.getWindowImages(ProductProperties.java:310)
        at org.eclipse.ui.internal.ProductInfo.getWindowImages(ProductInfo.java:100)
        at org.eclipse.ui.internal.WorkbenchPlugin.getWindowImages(WorkbenchPlugin.java:1021)
        at org.eclipse.ui.internal.Workbench.initializeImages(Workbench.java:1952)
        at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:800)
        at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:185)
        at org.eclipse.ui.internal.ide.application.IDEApplication.createDisplay(IDEApplication.java:215)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:158)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:627)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1431)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jface.resource.FileImageDescriptor cannot be found by org.eclipse.jface_3.37.0.v20250427-1756
        at org.eclipse.osgi.internal.loader.BundleLoader.generateException(BundleLoader.java:567)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:562)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:438)
        at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:195)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
        ... 19 more

A negative requirement will look much like this:

https://github.com/eclipse-packaging/packages/pull/270/files

We'd want a version range that excludes the current version but not a newer one that might come out. I made this grab while installing so we can probably focus on excluding the feature.

Image


Note too that with Oomph's notification support we can show a page in the IDE that will show only for people who have this plugin installed...

merks added a commit to eclipse-oomph/oomph that referenced this issue May 22, 2025
merks added a commit to merks/packages that referenced this issue May 22, 2025
@merks
Copy link
Contributor
merks commented May 22, 2025

I tested adding a p2.inf to Oomph setup core feature:

requires.0.namespace=org.eclipse.equinox.p2.iu
requires.0.name=com.genuitec.eclipse.theming.core.feature.feature.group
requires.0.range = [0.0.1,2024.4.0.202412101111]
requires.0.min = 0
requires.0.max = 0

And with that installed, I tried to install darkest dark which fails in the expected way:

Image

So this approach should help prevent problems...

@merks
Copy link
Contributor
merks commented May 22, 2025

I've prototyped the notification page, which adjusts to the theme:

It looks like this in the IDE:

Image

The notification shows only if the problematic version of the feature is installed:

Image

This new page is showing IDE WG logos:

eclipse-oomph/oomph#160

@merks
Copy link
Contributor
merks commented May 22, 2025

The PR for option 4 (and to switch back to building against staging) is ready to merge:

#312

EPP packages for M3 are built and have been notarized.

I'll wait for @jonahgraham to verify that we are ready to enable staging builds again...

@laeubi
Copy link
Contributor
laeubi commented May 22, 2025

3. We can just try to publicize this, but the workaround for users if they end up with a broken install is non-trivial to do. Since the IDE won't start you can't simply undo the faulty install. The reality is that most people won't pay attention until they have a broken IDE

Just in case one can delete the plugin from the plugins folder and start with -clean, that's not nice but at least will unblock the startup problem.

@tjwatson
Copy link

Do we know the nature of the weaving hook? Is it something that can be identified. Perhaps we provide a way to deny list the hook such that the framework never calls it and logs an error?

@laeubi
Copy link
Contributor
laeubi commented May 22, 2025

@tjwatson As it is closed source its of course not that easy (one might use class decompiler for some rough overview) the only trace I found in the logs are

Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.ClassFormatError: Unexpected error from weaving hook. [in thread "Start Level: Equinox Container: 2d53c828-fbce-4583-9584-54e44ca5a85b"]
	at org.eclipse.osgi.internal.weaving.WeavingHookConfigurator.processClass(WeavingHookConfigurator.java:89)
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.processClass(ClasspathManager.java:794)
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.defineClass(ClasspathManager.java:764)
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findClassImpl(ClasspathManager.java:691)
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:657)
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:637)
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:616)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348)
	at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414)
	at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:499)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)

where it seem to fail weave some code with newer java versions. Beside that it seem to redirect class to load some images, and these then fail later on as the referenced class is no longer there at runtime. I really don't see a good way here to handle it on the framework level.

@tjwatson
Copy link

Here are the WeavingHook services:

g! services org.osgi.framework.hooks.weaving.WeavingHook
{org.osgi.framework.hooks.weaving.WeavingHook}={service.id=32, service.bundleid=36, service.scope=singleton}
  "Registered by bundle:" org.apache.aries.spifly.dynamic.bundle_1.3.7 [36]
  "Bundles using service"
    org.eclipse.osgi_3.23.0.v20250228-0640 [0]
{org.osgi.framework.hooks.weaving.WeavingHook}={service.id=44, service.bundleid=354, service.scope=singleton}
  "Registered by bundle:" com.genuitec.eclipse.patches_2024.4.0.202412101111 [354]
  "Bundles using service"
    org.eclipse.osgi_3.23.0.v20250228-0640 [0]
{org.osgi.framework.hooks.weaving.WeavingHook}={service.id=166, service.bundleid=232, service.scope=bundle, osgi.ds.satisfying.condition.target=(osgi.condition.id=true), component.name=org.eclipse.pde.bnd.ui.internal.Auxiliary, component.id=79}
  "Registered by bundle:" org.eclipse.pde.bnd.ui_1.2.0.v20250128-1454 [232]
  "Bundles using service"
    org.eclipse.osgi_3.23.0.v20250228-0640 [0]

I can quickly write up a PR that blocks the WeavingHook from com.genuitec.eclipse.patches. It will be hard coded for now and I can give a property to enable optionally.

akurtakov pushed a commit to eclipse-platform/eclipse.platform.ui that referenced this issue May 22, 2025
@jonahgraham
Copy link
Contributor Author

We have a fix merged in Eclipse Platform eclipse-platform/eclipse.platform.ui#3002

This will prevent users with com.genuitec.eclipse.theming.core.feature installed from updating Eclipse Platform until genuitec also provides a fixed version.

@merks I think we need this too #310 (comment) - not sure when to turn it on.

@tjwatson
Copy link

I really don't see a good way here to handle it on the framework level.

It is rather easy:

eclipse-equinox/equinox#1002

@jonahgraham
Copy link
Contributor Author

@tjwatson - we are discussing this now at the IDE biweekly calls. For now the consensus is we shouldn't do this, at least not yet. If we want to do something like this we need to get EMO involved too.

@tjwatson
Copy link

If we want to do something like this we need to get EMO involved too.

Interesting. How is that different than preventing an upgrade?

@jonahgraham
Copy link
Contributor Author

If we want to do something like this we need to get EMO involved too.

Interesting. How is that different than preventing an upgrade?

Basically version ranges. I suspect if we disabled just the known version in the weaving we would be ok. With eclipse-platform/eclipse.platform.ui#3002 merged, do you think we need the weaving hook disable too?

@tjwatson
Copy link

Basically version ranges. I suspect if we disabled just the known version in the weaving we would be ok. With eclipse-platform/eclipse.platform.ui#3002 merged, do you think we need the weaving hook disable too?

Maybe not, I just worry they publish regular updates and we quickly will go past our short-lived range: [0.0.1,2024.4.0.202412101111]

@jonahgraham
Copy link
Contributor Author

Maybe not, I just worry they publish regular updates and we quickly will go past our short-lived range: [0.0.1,2024.4.0.202412101111]

I am having to hope for good intentions from genuitec - see emails in eclipse-cdt/cdt#1164. They know about the problem, so I hope they don't publish a new version.

I have asked them to get involved here, but so far radio silence on public engagement.

@jonahgraham
Copy link
Contributor Author

so I hope they don't publish a new version.

*so I hope they don't publish a new broken version.

@merks
Copy link
Contributor
merks commented May 22, 2025

They don't publish regular updates, and are "promising" to work on a fix.

The listing says:

Date Updated: Tuesday, December 10, 2024 - 06:29

And that's reflected in the qualifier version...

So it seems reasonably safe to assume that if/when there is an update now, it will be the one that fixes the problem. That's of course in everyone's best interesting especially and including for genuitec.

@tjwatson
Copy link

OK, we can keep the nuclear option for later if things to go well.

merks added a commit to eclipse-oomph/oomph that referenced this issue May 22, 2025
@merks
Copy link
Contributor
merks commented May 22, 2025

The notification describe in #310 (comment) have been committed and should be live soon...

@wgalanciak
Copy link

Hi, here from CodeTogether. We are actively working on this. We've identified two different areas that we need to address to ensure full compatibility. One is fixed and pending release and we are confirming now the fix the remaining issue.

We are targeting a fix release by mid-next week. Thanks for the investigation and visibility.

@jonahgraham
Copy link
Contributor Author

Thanks @wgalanciak for the timeline.

@Speiger
Copy link
Speiger commented May 29, 2025

Could someone implement a proper: "DONT REMIND" feature?
because i am getting this within eclipse everytime i start it and i don't plan updating eclipse for a while and the "dont remind me" button doesn't work.

And there isn't an update that could remove this problem in the first place...

I get you want to inform people.
That is fine, but please make sure it actually works when you allow to dismiss it...
Running: 2024-09 (4.33.0) because newer versions enforce a gradle buildship version that is broken and can't compile anymore without a use of a command line.

Anyways please fix the "warning" so it can be disabled.

@merks
Copy link
Contributor
merks commented May 29, 2025

@Speiger

On which OS are you?

And which version of the bundle org.eclipse.oomph.setup.editor is installed?

@merks
Copy link
Contributor
merks commented May 29, 2025

I tested it again just now and it works for me on Windows. It works by storing the URI of the to-be-opened page in this file in the configuration folder of the installation:

Image

@Speiger
Copy link
Speiger commented May 29, 2025

@merks org.eclipse.oomph.setup.editor isn't installed according to my Eclipse IDE installation details. (Installed Software tab)
I am running windows 10.

After looking into the folder you told me it is here, and the log told this:
[2025-03-02 01:25:16] Installing org.eclipse.oomph.setup.editor [1.30.0.v20250226-1734]

Also this file doesn't exist for me.
After manually adding it: It didn't fix it either... Still got it appearing.
And my eclipse instance isn't older than 3 months due to a reset i had to do of all my eclipse instances...
(In other words: Ctrl+A+Delete, and then reinstall all instances)

@merks
Copy link
Contributor
merks commented May 29, 2025

I’m on Windows 10 as well. Does pushing the button actually close the view? Is there maybe something in the error log that might provide a clue? Of course I want to make sure this works, but it’s hard to fix a problem I can’t reproduce, and don’t have even a theory about what might be going wrong. If the button closes the view, the logic to record the URI must be in place but that you don’t see the save result calls that into question. 🤔

@Speiger
Copy link
Speiger commented May 29, 2025

@merks no it doesn't close it, it doesn't even react. the only link that works is this one that gets you to this issue.

I also looked through logs and 0 errors . Not even in eclipse "error tab" (not the log folder) is a log.

Anyways, It would be nice if the next update when this is fixed for later eclipse versions that this warning label simply gets disabled instead. That way this fixes itself for me.

@merks
Copy link
Contributor
merks commented May 29, 2025

OK. That makes a little more sense. I’ll have to look at the version history tomorrow. In any case we’ll remove the notification when the problem is fixed by a new version of darkest dark. We’re still waiting for that.

@jonahgraham
Copy link
Contributor Author

In any case we’ll remove the notification when the problem is fixed by a new version of darkest dark. We’re still waiting for that.

It has been fixed, I am sure that @wgalanciak will be here soon to confirm it, but I just tried and installing darkest dark and it worked. The negative p2 did what it was supposed to do as well when upgrading a 2025-03 install with the theme installed.

One of the biggest issues I had with this issue is there was no indication in the error messages that the cause was genuitec's CodeTogether/Devstlye/Darkest Dark theme. With the negative p2 requirement in place the error messages about p2 issues nicely all mention genuitec's bundle name, so it will be easier to redirect people to the correct support channel.

I am closing this issue now as there is nothing left for Eclipse Packaging to do on it.

@jonahgraham jonahgraham 10000 closed this as completed May 29, 2025
@jonahgraham
Copy link
Contributor Author

PS.

@wgalanciak you may want to rename your update site to something other than "Eclipse Project Test Site". This site was auto-added when I installed the plug-in:

Image

@merks
Copy link
Contributor
merks commented May 30, 2025

@Speiger

I tried creating an 2024-09 installation and even forcing the viewer to use IE instead of Edge, but the button and functionality works. The release version org.eclipse.oomph.setup.editor is 1.30.0.v20250305-1050 which is newer than what you have installed. Updating that will likely fix the problem.

In any case, you can now avoid the problem now by installing devstyle again, which will be converted to an update operation to get the fixed version.

I tested that it works:

Image

@merks
Copy link
Contributor
merks commented May 30, 2025

@wgalanciak

I'm not sure if you folks have noticed that not all your features can be installed because of missing dependencies:

https://www.eclipse.org/setups/marketplace/?id=3274405

Missing requirement: CodeTogether Core 2025.1.0.202501171533 (com.genuitec.eclipse.codetogether.core 2025.1.0.202501171533) requires 'java.package; javax.websocket 0.0.0' but it could not be found

You should probably test that and ensure your site contains any necessary dependencies that are not available via the release train repository.

@Speiger
Copy link
Speiger commented May 30, 2025

@merks here is my version

Image

I tried updating it since it seems outdated to yours.
But it stated: "no updates found"

Note that i only have the theme not the other features dev style comes with.

@merks
Copy link
Contributor
merks commented May 30, 2025

Well of course you have the problematic version installed. That's why the notification comes up.


This site definitely has a new version:

https://devstyle.codetogether.io/

As seen in the repository explorer:

Image

And, as I showed, I was able to install that into a 2024-09 IDE.


I'm not sure what you tried, but using Install New Software with that site, being sure to not hide already installed items you should be able to update to that new version:

Image


The notification is updated with new information as well.

@gtjoseph
Copy link

I can confirm that the new plugin version works with 2025-06 however there are few nits that could make the experience better.

@wgalanciak If you try to update the plugin via the Marketplace in a <=2025-03 install, you get an "operation plan must be resolved" error. You can update it via "Help/Install New Software" though. Also, is there a way we can report plugin issues directly to CodeTogether? And yeah, "Eclipse Project Test Site" probably isn't what you want to name the update entry. :)

@jonahgraham You may want to change the reminder text to instruct users to upgrade DevStyle via "Help/Install New Software" before updating to 2025-06.

Thanks again to you both for working this issue!

@merks
Copy link
Contributor
merks commented May 30, 2025

It’s a good idea. I did expect update to work. Maybe you want to create a PR?

https://github.com/eclipse-oomph/oomph/blob/master/releng/org.eclipse.oomph.releng/www/notification/devstyle/index.html

Otherwise I look at it tomorrow.

@Speiger
Copy link
Speiger commented May 30, 2025

@merks after updating manually (not automatically) it has fixed all my issues.
Thank you :)

@merks
Copy link
Contributor
merks commented May 30, 2025

Very good. I really appreciate when people provide status updates. Yes helping is its own reward, but thank yous are the icing on the cake 🧁

@merks
Copy link
Contributor
merks commented May 31, 2025

FYI, I've updated the notification with instructions:

https://www.eclipse.org/setups/notification/devstyle/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants
0