cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: Multi interface -- some trouble

From: Andy Serpa <ac_at_onehorseshy.com>
Date: Tue, 17 Feb 2004 04:37:53 -0500

> >
> > Any ideas?
>
> Several!
>
> I don't recognize your problem description, so I don't belive this
> problem has been fixed since the 7.11.0 release but I would still
> encourage you to download a recent daily snapshot and see if this
> still shows the problems before we start the chase for real. (You'll
> have to build the DLL yourself then, there's no binary daily
> snapshots.)
>

I knew you were gonna say something like that. But you see, I'm not
a C programmer -- that's why I use Euphoria. So I'm afraid I'd be
incapable of even building the dang .dll. I only know enough about C
to make Euphoria wrappers for .dlls.

> I would *really* enjoy some more details on the crash(es). When/where
> does the crash happen? It might force you to build your own DLL to get
> the proper set of debug symbols. If you could get a debugger to show
> the situation of the crash (possibly port-mortem) it would be really
> good.
>
All I get is "machine level error" -- which is a Euphoria error
message that means it happens in the .dll somewhere, and not in my
Euphoria code (although it could happen if the function returned a
value of unexpected type, I think). The crashes occur during
curl_multi_perform(), that's all I know.

I just now tried something. Instead of doing a curl_global_init() at
application startup and a curl_global_cleanup() at application
shutdown, I did a global_init(), then one set of multi-handle
transfers, then a global_cleanup(). Then another global_init() and a
new set of multi-handle transfers. No crashes on repeated attempts.
So maybe the global_cleanup() is doing something the easy handle
cleanups or multi handle cleanup() is not doing? (Although in my
original scenario where I was just adding easy handles as other easy
handles were removed, multi_cleanup() was never called before the
crash because the multi handle stayed open.)

> If you could rewrite your crashing example into a plain C source file
> that makes the crash happen, it would not only remove the risk of this
> being caused by your wrapper it would also enable us to debug this
> from our ends using our own local operating systems (and debugging
> tools) of choice.
>

Too dumb to do that, but I can provide you with pseudo-code and the
chain of exact curl lib function calls and you can try to duplicate
in C, if you like.

-- Andy
Received on 2004-02-17