curl / Mailing Lists / curl-library / Single Mail
Buy commercial curl support from WolfSSL. We help you work out your issues, debug your libcurl applications, use the API, port to new platforms, add new features and more. With a team lead by the curl founder himself.

Re: libcurl.dll 7.84.0 and higher causes a memory ACCESS_VIOLATION error.

From: Ray Satiro via curl-library <curl-library_at_lists.haxx.se>
Date: Wed, 2 Nov 2022 01:20:57 -0400

On 11/1/2022 12:59 PM, Patrick Vansevenant wrote:
> I have tried the following :
>
> procedure curl_global_init external "libcurl.dll" cdecl:
>   define input  parameter i-init   as long.
>   define return parameter p-Return as*integer.*
> end procedure.
>
> But that throws the following error in OpenEdge : "/DLL datatype must
> be one of CHARACTER, BYTE, SHORT, UNSIGNED-SHORT, LONG, FLOAT, or
> DOUBLE (3383)"/.
>
> I have tried with SHORT and BYTE as return parameter too. But
> I experience the same issues as with LONG.
>
> We have also written a C++ program and there indeed, there we don't
> encounter any issues.
>
>
> Kind regards,
> Patrick
> ---
>
>
> Op di 1 nov. 2022 om 05:29 schreef Ray Satiro via curl-library
> <curl-library_at_lists.haxx.se>:
>
> 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.
>

Please don't top-post, it makes the conversation hard to follow. [1]

What you have reported is unlikely to be a libcurl issue, since you
cannot reproduce in C. I would contact OpenEdge and ask them how to make
libcurl work in their programming language.


[1]: https://curl.se/mail/etiquette.html#Do_Not_Top_Post


-- 
Unsubscribe: https://lists.haxx.se/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html
Received on 2022-11-02