[xml] Crash pb with multi-thread program (libxml2.7.1, Win32, msvc v15.00.21022.08)



Hello,

On Windows XP, I have a crash when some functions in libxml2 are in
interaction with threads. For example, the following program crash only
in 'threadfunc' (when calling xmlBufferCreate) :


#include <stdio.h>
#include <errno.h>
#include <windows.h>
#include <winbase.h>
#include <process.h>
#include <libxml/tree.h>

int threadfunc(void *arg) {
  xmlBufferPtr crashTest=NULL;
  fprintf(stderr,"Crash test in thread\n");
  crashTest=xmlBufferCreate(); // <------------ !!!  Crash, access
violation !!!
  fprintf(stderr,"alive?\n");
}

int main(int argc, char **argv)  {
  int rc;
  xmlBufferPtr crashTest=NULL;

  fprintf(stderr,"Starting thread crash with libxml?\n");
  crashTest=xmlBufferCreate();
  fprintf(stderr,"no crash in main thread\n");
  if ((rc = _beginthread(threadfunc, 0,NULL))==-1) {
    fprintf(stderr,"Thread creation error\n");
    exit(1);
 }
 while (1==1) ;
}


The stack is here :
-------------------

'test.exe': Loaded
'D:\Philippe\Atelier\pertimm\ogmios\build\debug\bin\test.exe', Symbols
loaded.
'test.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll'
'test.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll'
'test.exe': Loaded
'D:\Philippe\Atelier\pertimm\ogmios\build\debug\bin\libxml2.dll',
Symbols loaded.
First-chance exception at 0x7c928fea in test.exe: 0xC0000005: Access
violation writing location 0x00000010.
Unhandled exception at 0x7c928fea in test.exe: 0xC0000005: Access
violation writing location 0x00000010.
The program '[2864] test.exe: Native' has exited with code 0 (0x0).


The crash occurs in code libxml2/threads.c :
--------------------------------------------
if (cleanup_helpers_head !=NULL) {
    cleanup_helpers_head->prev=p;
}

---

I'm using a self compiled libxml2.7.1, with this option : cscript
configure.js iconv=no
-------------------------------------------------------------------------------------

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
libxml2 version: 2.7.1
Created Makefile.
Created config.h.
XML processor configuration
---------------------------
Trio: no
Thread safety: native
FTP client: yes
HTTP client: yes
HTML processor: yes
C14N support: yes
Catalog support: yes
DocBook support: yes
XPath support: yes
XPointer support: yes
XInclude support: yes
iconv support: no
iso8859x support: no
zlib support: no
Debugging module: yes
Memory debugging: no
Runtime debugging: no
Regexp support: yes
Module support: yes
Tree support: yes
Reader support: yes
Writer support: yes
Walker support: yes
Pattern support: yes
Push support: yes
Validation support: yes
SAX1 support: yes
Legacy support: yes
Output support: yes
XML Schema support: yes
Schematron support: yes
Python bindings: no

Win32 build configuration
-------------------------
Compiler: msvc
C-Runtime option: /MD
Embed Manifest: no
Debug symbols: no
Static xmllint: no
Install prefix: .
Put tools in: $(PREFIX)\bin
Put headers in: $(PREFIX)\include
Put static libs in: $(PREFIX)\lib
Put shared libs in: $(PREFIX)\lib
Include path: .
Lib path: .

------------------------------------------

Compiler : Microsoft (R) 32-bit C/C++ Optimizing Compiler Version
15.00.21022.08 for 80x86

Crash programm is compiled with options : /W3 /O2 /MD

Regards

Philippe





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]