Skip to content
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

UnsatisfiedLinkError of swt-win32-4965r8.dll on Windows Server 2008 R2 #1252

Closed
serjiokov opened this issue May 23, 2024 · 22 comments
Closed

Comments

@serjiokov
Copy link

Hello,

Issue description:

Recently we switched to the latest Eclipse SDK release
https://download.eclipse.org/releases/2024-06 version build 202405031000
and bumped with product crash on specific OS's: Windows 8 / Windows Server 2008
due to UnsatisfiedLinkError of swt-win32-4965r8.dll

PS:
Let us please, know if you reduce support of OS like Windows 8 / Windows 2008 RC

The original issue in DBeaver product:
dbeaver/dbeaver#34034

@HeikoKlare
Copy link
Contributor

Could you please detail from which Eclipse version you switched to the new one?

I am not aware of very recent changes that (explicitly) reduced support for older Windows version. But note that, if I am not mistaken, the Windows versions you mention are out of support for quite some time, so

  1. probably no one (explicitly) considers compatibility with such versions when making changes to SWT, and
  2. functionality specific for these old version has already been reduced over the last years with changes like in [win32] Fix various warnings in native libs, treat any new warnings as errors #370, precisely 3cc6898

@serjiokov
Copy link
Author

Thanks for your response.

@serjiokov
Copy link
Author

Hello,
we switched from
2024-06/202404121000/
to
2024-06/202405031000/

The entire support of Windows 7, Windows 8, Windows Server 2008 R2, MacOS Catalina 10.15.7
is broken due to

Caused by: java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
	D:\bin\dbeaver\home\swt-win32-4965r8.dll: Belirtilen yordam bulunamadı
	no swt-win32 in java.library.path:

References issues
dbeaver/dbeaver#34244
dbeaver/dbeaver#34197
dbeaver/dbeaver#34034
dbeaver/dbeaver#30700

Could you please confirm that Windows 7, Windows 8, Windows Server 2008 R2, MacOS Catalina 10.15.7
out of support?

@HeikoKlare
Copy link
Contributor

I am not aware of any changes in that date range that have actively removed support for those operating systems. We had additions in the Windows native bindings (94d9c5b), which might be a reason for outdated Windows versions not to work (properly) anymore, as these Windows version may not provide the accessed methods. But I am not sure whether that's really the root cause here as, first, I think there are also other OS methods not provided by older Windows versions which do not make the SWT DLLs loading fail and, second, I do not see changes to MacOS in SWT, but you say that MacOS is also not working anymore.

In dbeaver/dbeaver#34244 (comment), this error message is posted, which actually sounds like missing methods provided by the OS:

java.lang.UnsatisfiedLinkError: Could not load SWT library. 
Reasons: 
	C:\Users\***\AppData\Local\DBeaver\swt-win32-4965r8.dll: The specified procedure could not be found
	no swt-win32 in java.library.path: 

But this does still not explain problems with MacOS.

@serjiokov
Copy link
Author

serjiokov commented Jun 6, 2024

One point,
The users who are using Oses below ( Windows 7, 8, 2008 ) will bumped with the same set issue UnsatisfiedLinkError after switching to Eclipse release 2024-06, it not to be so friendly for them. Could you please investigate it?

@HeikoKlare
Copy link
Contributor

I understand that this is annoying and of course it would be great to have some tracking of minimal system requirements and some validation on startup and update whether they are fulfilled. We had a similar discussion in eclipse-platform/.github#193.

Could you please investigate it?

The problem is: Who do you mean by "you"? Eclipse is a community project, so it up to its users to implement fixes and required features. I (personally) cannot do that, since this is not an issue for me and my company, as users of our products do not use outdated Windows versions. And independent from what my company needs directly, I am sorry to say that there are far more important things for the Eclipse platform to be done than supporting outdated operating systems or handling that someone uses them. Note that this is not about dropping support for like a two-year-old OS, but for OS versions have been out-of-support for some time anyway. If it is important for you to have that feature, it would be great if you could contribute that to the Eclipse platform.

@greenozon
Copy link

this is critical issue, hit it as well recently, please do not drop support of big list of Windows OSes like 7, etc

details:

	C:\Users\User\.swt\lib\win32\x86_64\swt-win32-4965r11.dll: The specified procedure could not be found
	Can't load library: C:\Users\User\.swt\lib\win32\x86_64\swt-win32.dll
	Can't load library: C:\Users\User\.swt\lib\win32\x86_64\swt.dll
	C:\Users\User\.swt\lib\win32\x86_64\swt-win32-4965r11.dll: The specified procedure could not be found

	at org.eclipse.swt.internal.Library.loadLibrary(Library.java:345)
	at org.eclipse.swt.internal.Library.loadLibrary(Library.java:254)
	at org.eclipse.swt.internal.C.<clinit>(C.java:19)
	at org.eclipse.swt.internal.win32.STARTUPINFO.<clinit>(STARTUPINFO.java:42)
	at org.eclipse.swt.widgets.Display.<clinit>(Display.java:149)
	at com.pnfsoftware.jeb.rcpclient.extensions.app.App.onPreDisplayCreation(App.java:93)
	at com.pnfsoftware.jeb.rcpclient.JebApp.onPreDisplayCreation(JebApp.java:52)
	at com.pnfsoftware.jeb.rcpclient.extensions.app.App.<init>(App.java:70)
	at com.pnfsoftware.jeb.rcpclient.JebApp.<init>(JebApp.java:37)
	at com.pnfsoftware.jeb.rcpclient.Launcher.main(Launcher.java:18)

@Phillipus
Copy link
Contributor

Phillipus commented Jun 14, 2024

I am not aware of any changes in that date range that have actively removed support for those operating systems. We had additions in the Windows native bindings (94d9c5b), which might be a reason for outdated Windows versions not to work (properly) anymore, as these Windows version may not provide the accessed methods.

That commit references SystemParametersInfoForDpi. See https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-systemparametersinfofordpi

And f809372 references GetSystemMetricsForDpi. See https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsystemmetricsfordpi

Both of these functions require a minimum version of Windows 10:

Minimum supported client 	Windows 10, version 1607 [desktop apps only]
Minimum supported server 	Windows Server 2016 [desktop apps only]

But this does still not explain problems with MacOS.

That'll be eclipse-equinox/equinox@69b907e


please do not drop support of big list of Windows OSes like 7, etc

But these are outdated OS's and in order to progress Eclipse has to move on. And, in fact, these minimum versions are already documented. See here where it states:

Eclipse 4.32 is tested and validated on the following reference platforms (this list is updated over the course of the release cycle):

Operating System Version Hardware
Windows 10
11
x86 64-bit
Apple macOS 12
13
x86 64-bit

(In practice the minimum macOS is 11).

As far as I can see it would require too many reverts of code to go back. For example this commit and this one.

I'd say that ship has sailed.

@Phillipus
Copy link
Contributor

Phillipus commented Jun 17, 2024

I am not aware of any changes in that date range that have actively removed support for those operating systems.

My curiosity was such that I installed Windows 8 in a VM and bisected where things stopped working. Specifically, it was the new v4965r7 binaries at commit 3d87b22. This is where the new Windows OS native functions appear that were committed in 94d9c5b and f809372. But, as I said above, I doubt this will be reverted.

@HannesWell
Copy link
Member

I am not aware of any changes in that date range that have actively removed support for those operating systems.

My curiosity was such that I installed Windows 8 in a VM and bisected where things stopped working.

Thank you for verifying!

this is critical issue, hit it as well recently, please do not drop support of big list of Windows OSes like 7, etc

I understand this is unpleasant for you, but without someone dedicated to it, it's not really feasible to provide support for a longer time than the OS vendor. And the mentioned changes really improve the situation for recent OS versions.

Of course you can still use older releases from the corresponding p2 update site or package for 2024-03 or ealier

I'd say that ship has sailed.

I think so as well, therefore let's close this as not planned. If someone steps up to contribute fixes for the affected OS versions without affecting recent ones, we can re-open this and discuss it again.

@HannesWell HannesWell closed this as not planned Won't fix, can't repro, duplicate, stale Jun 17, 2024
@laeubi
Copy link
Contributor

laeubi commented Jun 18, 2024

One problem is of course test-hardware, we don't have win7 / 8 hardware to test as far as I know (at least not github), otherwise one might think about having an if/then else at the respective code.

@HeikoKlare
Copy link
Contributor

this is critical issue, hit it as well recently, please do not drop support of big list of Windows OSes like 7, etc

I tried to give constructive input for this topic, so it would be great to keep the discussion constructive and avoid such over-dramatic statements and giving negative votes on my constructive explanations of the situation. No one has dropped support for a "big list of Windows OSes". Apparently, Windows 8 and below are not supported anymore, but please keep in mind that the unsupported systems have long been out of support and do not constitute a significant number of usages, see, e.g., https://gs.statcounter.com/os-version-market-share/windows/desktop/worldwide
image

@Phillipus
Copy link
Contributor

A user: "This is a critical issue!"
Also a user: "Our company is using unsupported OSes"

:-)

@n5a5
Copy link

n5a5 commented Jul 4, 2024

Also a user: "Our company is using unsupported OSes"

I totally agree here. At the same time, we (DBeaver tech support) have just received an angry report from a customer about DBeaver 24.1 not launching on Windows Server 2012, which is supported until October 2026.

I guess I somehow need to convince our devs to find time to take a look at this...

@akurtakov
Copy link
Member

As per https://learn.microsoft.com/en-us/lifecycle/products/windows-server-2012 Oct 10, 2023 is end of support except for "Extended Security Update" but eclipse has always been considering the general date and not the "extended" as some of these literally never end and the project doesn't have the ability to advance and keep such compatibility.

@Phillipus
Copy link
Contributor

I guess I somehow need to convince our devs to find time to take a look at this...

I would say that you'd need to fork SWT and revert (at the very least) f809372 and 145f280 and anything built on top of those...

@laeubi laeubi pinned this issue Jul 5, 2024
@laeubi
Copy link
Contributor

laeubi commented Jul 5, 2024

Both of these functions require a minimum version of Windows 10:

I have a Win 7 Laptop here an though to maybe look into this, but it seems the DLL loading itself already fails so not much one can don in the "java layer".

So is there a way to not "statically" reference the function but have a runtime check for windows version?

@laeubi
Copy link
Contributor

laeubi commented Jul 6, 2024

I totally agree here. At the same time, we (DBeaver tech support) have just received an angry report from a customer about DBeaver 24.1 not launching on Windows Server 2012, which is supported until October 2026.

One solution would be to let DBeaver 24.1 using Eclipse 2024-03, increase the version to DBeaver 25 and use 2024-06 from there on with a clear hint it does need Win 10+

@Camiller957
Copy link

Windows Server 2012 also encountered the same error. Does DBeaver software support Windows Server 2012?

@HWesterhof
Copy link

Not supporting end of life OS'es is one thing, but not warning people before an upgrade is maybe fixable. My DBeaver client told me to upgrade to the latest version, but I'm on Windows Server 2012 R2 (for...reasons). So in my opinion the client should not suggest upgrading to a version that will break the installation.

@greenozon
Copy link

Windows Server 2012 is supported officially 2 more years (up to late 2026)
https://endoflife.date/windows-server

why banning it before EOL???

@HeikoKlare
Copy link
Contributor

@greenozon I would like to kindly ask you to stop spamming bold statement and read the explanations we have given so far instead. No one here actively bans some OS (version). We only try to make progress, keeping SWT alive and adopting new necessary features. Losing support for older OSes is not a goal but may only be a side effect of these efforts. Please consider contributing to the Eclipse project to ensure that (implicit) OS version constraints are properly handled, checked and considered in a prerequsites check for (automatic) updates of products like the IDE.
I agree with @HWesterhof that the goal of any efforts with respect to this issue should be to make version requirements more explicit and, in particular, checked as preconditions for automated updates.

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