On 10/31/2022 11:13 AM, Patrick Vansevenant via curl-library wrote:
We have been using libcurl.dll for a few years to do almost all our
HTTP/HTTPS requests in our OpenEdge 11.7 environment (= our custom ERP
solution).
For more info about OpenEdge 11.7 see :
https://www.progress.com/openedge/whats-new-11-7.
When libcurl.dll 7.84.0 or higher is used in an OpenEdge 11.7 session,
then the OpenEdge session crashes when the libcurl.dll is released
from memory.
A .protrace file is generated with the following error :
*/Exception code: C0000005 ACCESS_VIOLATION/*
With the following small test OpenEdge program (test_libcurl.p) we are
able to reproduce the issue :
/* *************************** Definitions ************************** */
block-level on error undo, throw.
/* ******************** Preprocessor Definitions ******************** */
procedure curl_global_init external "libcurl.dll" cdecl:
define input parameter i-init as long.
define return parameter p-Return as long.
end procedure.
procedure curl_global_cleanup external "libcurl.dll" cdecl:
end procedure.
/* *************************** Main Block *************************** */
log-manager:logfile-name = "C:\OpenEdge\WRK117\test_libcurl.log".
&GLOBAL-DEFINE CURL_GLOBAL_NOTHING 0
&GLOBAL-DEFINE CURL_GLOBAL_SSL 1
&GLOBAL-DEFINE CURL_GLOBAL_WIN32 2
&GLOBAL-DEFINE CURL_GLOBAL_ALL ({&CURL_GLOBAL_SSL} + {&CURL_GLOBAL_WIN32})
&GLOBAL-DEFINE CURLE_OK 0
define variable iReturn as integer no-undo.
define variable iCurlHandle as integer no-undo.
run *curl_global_init*(input {&CURL_GLOBAL_ALL}, output iReturn).
log-manager:write-message(substitute("curl_global_init returned &1.",
iReturn)).
run *curl_global_cleanup*.
log-manager:close-log().
We experience no issues with libcurl.dll 7.83.1 and lower.
Any idea how we can solve the above issue ?
curl_global_init return value is int not long type. See if you can
reproduce in C.
--
Unsubscribe: https://lists.haxx.se/listinfo/curl-library
Etiquette: https://curl.se/mail/etiquette.html