Jump to content
JWan

ICS v9.x Error on WinXP under Delphi7 - ConvertThreadToFiberEx error

Recommended Posts

Hi all, first and foremost, I would like to say that ICS had been a big help on some of my requirements.  Yes, I am still using Delphi7 and still is maintaining an app that is being used under WinXP.  Just last December 2024, I updated my ICS installation from 8.x to 9.3 and after recompiling the same app without any changes, all goes well.  However, what I noticed are:

1. the EXE file size bloated by around 7MB more than while using v8.x

2. everytime I started the app in XP, I get this error: The procedure entry point ConvertThreadToFiberEx could not be located in the dynamic link library KERNEL32.dll

 

Do note that no other part of the program source code was change aside from recompiling the exact same code using ICS 9.x

 

I am not a professional programmer so I dont know where to find the culprit or how to solve the issue.  I wanted to upgrade to v9.x because it comes with mqtt and I am thinking of incorporating mqtt messaging to the app.

 

hope anybody can provide a solution.  Thank you.

Share this post


Link to post

ConvertThreadToFiberEx is a WinAPI function which exists since Windows Vista, so it cannot work under XP.

Share this post


Link to post

Sorry, we ceased support for Windows XP several years ago, the OpenSSL DLLs do not support it.  The oldest OS supported is Windows 7, and that is rarely tested. 

 

ICS does not use ConvertThreadToFiberEx, perhaps OpenSSL does.  So you may be able to disable all SSL functionality to keep XP working, but you can not use very old OpenSSL DLLs. 

 

Or stick with old unsupported code for an unsupported OS. 

 

Angus

 

 

 

Share this post


Link to post
18 minutes ago, Olli73 said:

ConvertThreadToFiberEx is a WinAPI function which exists since Windows Vista, so it cannot work under XP.

would that mean there is no way for me to use ICS v9.x on an app that will run on WinXP machine?

Share this post


Link to post
Just now, Angus Robertson said:

Sorry, we ceased support for Windows XP several years ago, the OpenSSL DLLs do not support it.  The oldest OS supported is Windows 7, and that is rarely tested. 

 

ICS does not use ConvertThreadToFiberEx, perhaps OpenSSL does.  So you may be able to disable all SSL functionality to keep XP working, but you can not use very old OpenSSL DLLs. 

 

Or stick with old unsupported code for an unsupported OS. 

 

Angus

 

 

 

I was also guessing it might be about OpenSSL.  Since my app doesnt use OpenSSL or SSL functionality (except when I will add MQTT functions), can you pinpoint me where or how to "disable"  all SSL functionality?

Edited by JWan

Share this post


Link to post

The readme9,txt file explains how to change defines to stop OpenSSL being loaded automatically, some components also have a NoSSL property.  Generally, we make it easy to use SSL, not to not use it.

 

Angus

 

Share this post


Link to post

Before you go messing around with your SSL setup, you should VERIFY whether OpenSSL is even the culprit to begin with. Use a dependancy walking tool to check your EXE and all DLLs your app uses, see which module is actually importing ConvertThreadToFiberEx(). 

Share this post


Link to post

OpenSSL 3.0 and 3.4 both use ConvertThreadToFiberEx so I guess you were using an older OpenSSL with v8.  Never even heard of Fiber APIs before. 

 

Not easy to check, Dependency Walker took 18 minutes of CPU time to fill it's treeview for those two DLLs, slowing my desktop to a crawl. 

 

Angus

 

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×