Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com Message-ID: <38F4B980.6BF9D077@tesis.de> Date: Wed, 12 Apr 2000 19:59:28 +0200 From: =?iso-8859-1?Q?Thie=DF=2DMagnus?= Wolter Organization: TESIS DYNAware GmbH X-Mailer: Mozilla 4.7 [de] (Win98; I) X-Accept-Language: de MIME-Version: 1.0 To: cygwin AT sourceware DOT cygnus DOT com Subject: DLL problem Content-Type: text/plain; charset=iso-8859-1 X-AntiVirus: scanned for viruses by AMaViS 0.2.0-pre6 (on host fw.tesis.de) Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id NAA04060 Hi, I recently installed Cygwin and tried to port a library, which was compiled with gcc and g++, to a Windows dll. I followed the steps described under 'Building and Using DLLs' and used this script to generate the DLL: cd driver make -f driver.mak libdrv.a >& ../make_driver.log cp libdrv.a .. cd ../fransch make -f fransch.mak >& ../make_fransch.log cp libfransch.a .. cd .. gcc -c fs_driver_lib.c -Idriver -o fs_driver_lib.o gcc -s -Wl,--base-file,fs_driver_lib.base -o fs_driver_lib.dll fs_driver_lib.o -Wl,-e,_DllMain AT 12 -Wl,-e,_FS_Driver_run -Wl,libdrv.a -Wl,libFransch.a -Wl,libstdc++.a dlltool --base-file fs_driver_lib.base --def fs_driver_lib.def --output-exp fs_driver_lib.exp --dllname fs_driver_lib.dll gcc -s -Wl,--base-file,fs_driver_lib.base,fs_driver_lib.exp -o fs_driver_lib.dll fs_driver_lib.o -Wl,-e,_DllMain AT 12 -Wl,-e,_FS_Driver_run -Wl,libdrv.a -Wl,libFransch.a -Wl,libstdc++.a dlltool --base-file fs_driver_lib.base --def fs_driver_lib.def --output-exp fs_driver_lib.exp gcc -Wl,fs_driver_lib.exp -o fs_driver_lib.dll fs_driver_lib.o -Wl,-e,_DllMain AT 12 -Wl,-e,_FS_Driver_run -Wl,libdrv.a -Wl,libFransch.a -Wl,libstdc++.a Compilation and linking works without warnings. The corresponding fs_driver_lib.lib is generated as follows: lib /machine:ix86 /DEF:fs_driver_lib.def and used in a VC++ 6.0 project to be linked against an other DLL (FS_Driver), which in turn is called from Simulink. DLL loading works fine, but when actually calling the exported function, a segmentation violation is detected (see below). It seems to be related to file I/O and print statements, but I can't say for sure. I've looked all over the FAQ and tried a lot of compiler and linker switches, but without avail. Has anybody an idea? Does the commercial version cover such kind of support? Best regards, Thiess ------------------------------------------------------------------------ Segmentation violation detected at Wed Apr 12 19:56:01 2000 ------------------------------------------------------------------------ Configuration: MATLAB Version: 5.3.1.29215a (R11.1) Operating System: Microsoft Windows 98 Window System: Version 4.10 (Build 2222: A ) Register State: EAX = 00000000 EBX = 610625bc ECX = 61062380 EDX = 00000000 ESI = 61064944 EDI = 01b37108 EBP = 01b36c20 ESP = 01b36c14 EIP = bff7b9a6 FLG = 00000246 Stack Trace: [0] KERNEL32.DLL:bff7b9a6(0x61062380, 0x610625bc, 0, 0x01b37108) [1] CYGWIN1.DLL:6105aa0d(0x61062380, 1024, 0x610625bc, 0x01b37020) [2] CYGWIN1.DLL:6105ebaa(0x610625bc, 0x08551040, 0x01b36f58, 0x6105851b) [3] CYGWIN1.DLL:6105b3b7(0x610625bc, 0x08551040, 0x01b37020, 0x01b37108) [4] CYGWIN1.DLL:6105851b(0x61062380, 0x610625bc, 0x08551040, 0x01b36f94) [5] CYGWIN1.DLL:6105845c(0x610625bc, 0x08551040, 0x01b36f94, 0x06d8d0f8) [6] CYGWIN1.DLL:61053f31(0x08551040, 0, 0x81708050, 0x8170800c) [7] FS_DRIVER_LIB.DLL:08551068(0x01b370e4, 0x83c46f74, 0, 0) [8] FS_DRIVER_LIB.DLL:08551259(0, 0x01b370e4, 0, 0) [9] FS_DRIVER.DLL:08512cc2(0x04e42fa8, 0, 0x06d8cf18, 0) [10] FS_DRIVER.DLL:085128e3(0xfffffffe, 0x04d6c270, 5, 0x06d8cf18) [11] MATLAB.EXE:_mexRunMexFile(0xffff127f, 0x04d6c270, 5, 0x06d8cf18) + 95 bytes [12] MATLAB.EXE:_psRunMexFile(0xfffffffe, 0x04d6c270, 5, 0x06d8cf18) + 458 bytes [13] MATLAB.EXE:_psCallMexFile(0xfffffffe, 0x04d6c270, 5, 0x06d8cf18) + 28 bytes [14] MATLAB.EXE:_psCallFunction(0xfffffffe, 0x04d6c270, 5, 0x06d8cf18) + 45 bytes [15] MATLAB.EXE:_psDoMatlabFcnCall(0xfffffffe, 0x04d6c270, 5, 0x06d8cf18) + 151 bytes [16] SIMULINK.DLL:_CMexSFcnOutputFcn(0x04d6bf38, 0x04cd34c0, 0x01b373ec, 0x007e5f77) + 571 bytes [17] SIMULINK.DLL:_ModelOutput(0x04d6bf38, 0x04d63710, 0x0467f8b0, 0) + 40 bytes [18] SIMULINK.DLL:_SFcnOutputFcn(0x04cd34c0, 0x06da586c, 0x0467f8b0, 0x04e150b4) + 247 bytes [19] SIMULINK.DLL:_BlockOutput(0x06da586c, 0x0467f8b0, 0x04d63710, 0) + 683 bytes [20] SIMULINK.DLL:_ExecSTaskOutputList(0x04d63710, 0x04dcd0a0, 0x04e150b4, 0) + 259 bytes [21] SIMULINK.DLL:_BdSystemOutput(0x0467f8b0, 0x02804278, 0x04dcd0a0, 0x0467f8b0) + 124 bytes [22] SIMULINK.DLL:_BdOutputFcn(0x04d63710, 0, 0x01b374d8, 0x00849af4) + 35 bytes [23] SIMULINK.DLL:_ModelOutput(0x04d63710, 0x04d63710, 0x0467f8b0, 0) + 40 bytes [24] SIMULINK.DLL:_slDoOutputAndUpdate(0, 0x026f8c28, 0x04d63710, 0) + 244 bytes [25] SIMULINK.DLL:_SimulateModel(1, 0x026f8c28, 0x01b3757c, 0x00a1df08) + 128 bytes [26] SIMULINK.DLL:_Simulate(0x01b3758c, 0x01b37588, 0, 3) + 497 bytes [27] SIMULINK.DLL:_sleCommandLineSimulation(0, 0x01b375d4, 3, 0x01b3789c) + 133 bytes [28] SIMULINK.DLL:_slFullSimulate(0, 0x01b375d4, 3, 0x01b3789c) + 26 bytes [29] MATLAB.EXE:_psStackOp(1, 3, 0, 0x01b39570) + 1194 bytes [30] MATLAB.EXE:_psInterPcode(1, 0x06d466b8, 2, 0) + 2180 bytes [31] MATLAB.EXE:_psInterPcode(1, 0, 0x026de848, 0) + 4441 bytes [32] MATLAB.EXE:_psWordsj(0, 0x01b39880, 0, 0x01b39b4c) + 1171 bytes [33] MATLAB.EXE:_psCallMFile(0, 0x01b39880, 0, 0x01b39b4c) + 170 bytes [34] MATLAB.EXE:_psCallFunction(0, 0x01b39880, 0, 0x01b39b4c) + 45 bytes [35] MATLAB.EXE:_psFullFevalFcn(0, 0x01b39880, 1, 0x01b39b48) + 201 bytes [36] MATLAB.EXE:_psStackOp(103, 1, 0, 0) + 1194 bytes [37] MATLAB.EXE:_psInterPcode(1, 0, 0x026dfcf8, 0) + 2426 bytes [38] MATLAB.EXE:_psWordsj(0, 0x01b3adec, 0, 0x01b3b0f8) + 1171 bytes [39] MATLAB.EXE:_psExecMFile(0, 0, 0x01b3b0f8, 0x026dfcf8) + 189 bytes [40] MATLAB.EXE:_psExecFunction(0, 0, 0x01b3b0f8, 0x026dfcf8) + 41 bytes [41] MATLAB.EXE:_psMMexExecute(685, 0, 0, 0x01b3cd18) + 611 bytes [42] MATLAB.EXE:_psInterPcode(1, 0, 2, 3) + 1678 bytes [43] MATLAB.EXE:_psInterPcode(1, 1, 0x026d95d8, 0) + 4441 bytes [44] MATLAB.EXE:_psWordsj(0, 0x01b3d028, 1, 0x01b3d2f4) + 1171 bytes [45] MATLAB.EXE:_psCallMFile(0, 0x01b3d028, 1, 0x01b3d2f4) + 170 bytes [46] MATLAB.EXE:_psCallFunction(0, 0x01b3d028, 1, 0x01b3d2f4) + 45 bytes [47] MATLAB.EXE:_psFullFevalFcn(0, 0x01b3d028, 2, 0x01b3d2f0) + 201 bytes [48] MATLAB.EXE:_psStackOp(103, 2, 0, 2) + 1194 bytes [49] MATLAB.EXE:_psInterPcode(0, 0x04d8c79a, 0, 0x02584a00) + 2426 bytes [50] MATLAB.EXE:_psEvalString(0x04d8c780, 25, 0, 0) + 537 bytes [51] MATLAB.EXE:_psEvalExpInWS(0x04d8c780, 0, 0, 0x01b3e3f8) + 94 bytes [52] HG.DLL:_goCallEventCallback(0, 0, 0x0074d7bc, 0x006fbcc0) + 321 bytes [53] HG.DLL:_goCallCallback(0x026e95a8, 0x04ad40e8, 0x0074d7bc, 0x006fbcc0) + 66 bytes [54] HG.DLL:_goControlActivated(0x026e95a8, 4056, 0x04ad4148, 0x01b3e6d0) + 80 bytes [55] UIW.DLL:_activate_control(4056, 0x04ad4148, 0x01b3e4e0, 34128) + 137 bytes [56] UIW.DLL:_PushButtonProc AT 16(4056, 0, 0, 4056) + 127 bytes [57] KERNEL32.DLL:bff7363b(0x66c78550, 26311, 0, 0xbff719b8) [58] KERNEL32.DLL:bff94407(0x84e66038, 0xbff7186d, 0x852a500f, 0) Segmentation violation occurred within signal handler. Unable to complete stack trace (stack was probably corrupted) This error was detected while a MEX-file was running. If the MEX-file is not an official MathWorks function, please examine its source code for errors. Please consult the MATLAB API Guide for information on debugging MEX-files. -- ------------------------------------------------------------- Dipl.-Ing. Thieß-Magnus Wolter Tel: +49 89 747377 33 TESIS DYNAware GmbH Fax: +49 89 747377 99 Implerstraße 26 D-81371 München, Germany t DOT wolter AT tesis DOT de ------------------------------------------------------------- -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com