Some weird crashes

simendsjo simen.endsjo at pandavre.com
Wed Mar 2 10:52:34 PST 2011


On 02.03.2011 18:24, Denis Koroskin wrote:
> On Tue, 01 Mar 2011 23:01:21 +0300, simendsjo
> <simen.endsjo at pandavre.com> wrote:
>
>> On 28.02.2011 20:24, Denis Koroskin wrote:
>>> On Mon, 28 Feb 2011 22:04:44 +0300, simendsjo
>>> <simen.endsjo at pandavre.com> wrote:
>>>
>>>> On 28.02.2011 18:52, simendsjo wrote:
>>>>>
>>>>> // ERROR
>>>>> auto res = mysql_library_init(0, null, null);
>>>>>
>>>>> auto cn = mysql_init(null);
>>>>> auto oldcn = cn;
>>>>>
>>>>> writeln(mysql_errno(cn));
>>>>> assert(cn == oldcn); // when the last assert is active, the above line
>>>>> changes cn and thus fails.
>>>>>
>>>>> auto err = mysql_errno(cn);
>>>>> assert(cn == oldcn);
>>>>
>>>> Btw, if I don't use writeln it doesn't fail..
>>>
>>> I think you have a bug at line 42.
>>>
>>> On a serious note, it might have helped if you'd attached source code,
>>> or at least binaries.
>>
>> Hmmm.. Seems my post last night didn't get through..
>> Here's the code and necessary libraries: http://share1t.com/4xgt2l
>
> What appears to be an error here is in fact an Access Violation at
> mysql_close.
>
> Here is a reduced test-case:
>
> import mysql;
>
> void main()
> {
> auto res = mysql_library_init(0, null, null);
> auto cn = mysql_init(null);
> mysql_close(cn);
> }
>
>
> Then I decided to check whether it is D's fault or not by porting this
> short program to C. Here is what I got:
>
> // mysql.c
> int mysql_server_init(int argc, char **argv, char **groups);
> struct MYSQL* mysql_init(struct MYSQL*);
> void mysql_close(struct MYSQL*);
>
> #define mysql_library_init mysql_server_init
>
> #define NULL 0
>
> #include <stdio.h>
>
> int main()
> {
> int res = mysql_library_init(0, NULL, NULL);
> struct MYSQL* cn = mysql_init(NULL);
> printf("here");
> mysql_close(cn);
> return 0;
> }
>
> This program works fine, BUT try commenting out the "printf" call and it
> crashes, too. That said, it is unlikely to be DMD fault here. Are you
> sure those prototypes and/or .lib/.dll files are fine?


The prototypes might be wrong. I'm in the process of checking everything.

The dll is the one included in the download. The lib is made with implib 
/system

But your c program fails..? Could the problem be with the implib library..?

I couldn't find a free download for coff2omf, that's why I don't use the 
supplied .lib.


More information about the Digitalmars-d-learn mailing list