Bug #69134 | libmysql.dll 5.6.11 failed to load in windows 8 (64bits) | ||
---|---|---|---|
Submitted: | 3 May 2013 11:51 | Modified: | 22 Jun 2013 15:03 |
Reporter: | Fernando Pereira | Email Updates: | |
Status: | No Feedback | Impact on me: | |
Category: | MySQL Server: Windows | Severity: | S1 (Critical) |
Version: | 5.6.11 | OS: | Windows (v,8 64bits) |
Assigned to: | CPU Architecture: | Any | |
Tags: | 5.6.11, failed, libmysql, load, windows |
[3 May 2013 11:51]
Fernando Pereira
[3 May 2013 11:55]
MySQL Verification Team
ERROR_BAD_EXE_FORMAT 193 (0xC1) %1 is not a valid Win32 application.
[3 May 2013 11:58]
MySQL Verification Team
What is "tdump" and what is it trying to do exactly? I tried dumpbin from visual studio and it works... D:\mysql-5.6.11-winx64\lib>dumpbin libmysql.dll Microsoft (R) COFF/PE Dumper Version 10.00.40219.01 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file libmysql.dll File Type: DLL Summary 3DF000 .data 2000 .idata C000 .pdata 38000 .rdata 7000 .reloc 1000 .rsrc D6000 .text 6000 data 2000 text
[3 May 2013 12:45]
Fernando Pereira
TDUMP does a dump of the file, showing the options. The dump: -------------------------------------------------- Microsoft Windows [versão 6.2.9200] (c) 2012 Microsoft Corporation. Todos os direitos reservados. C:\MySQL>cd "MySQL Server 5.6" C:\MySQL\MySQL Server 5.6>cd lib C:\MySQL\MySQL Server 5.6\lib>tdump libmysql.dll Turbo Dump Version 5.0.16.12 Copyright (c) 1988, 2000 Inprise Corporation Display of File LIBMYSQL.DLL Old Executable Header DOS File Size 47E800h (4712448. ) Load Image Size 450h ( 1104. ) Relocation Table entry count 0000h ( 0. ) Relocation Table address 0040h ( 64. ) Size of header record (in paragraphs) 0004h ( 4. ) Minimum Memory Requirement (in paragraphs) 0000h ( 0. ) Maximum Memory Requirement (in paragraphs) FFFFh ( 65535. ) File load checksum 0000h ( 0. ) Overlay Number 0000h ( 0. ) Initial Stack Segment (SS:SP) 0000:00B8 Program Entry Point (CS:IP) 0000:0000 Portable Executable (PE) File Header base: 000000F8 CPU type Unknown Flags 2022 [ executable linenumbers symbols largeaddr backwar ds library ] DLL flags 0140 [ ] Linker Version A.0 Time stamp 515ECBE4 : Fri Apr 05 10:04:36 2013 O/S Version 5.2 User Version 0.0 Subsystem Version 5.2 Subsystem 0003 [ Windows character ] Object count 00000009 Symbols offset 00000000 Symbols count 00000000 Optional header size 00F0 Magic # 20B Code size 000D5E00 Init Data size 00431A00 Uninit Data size 00000000 Entry RVA 00001270 Image base 00000001 Code base 00001000 Data base 80000000 Object/File align 00001000/00000200 Reserved 00000000 Image size 0050C000 Header size 00000400 Checksum 00000000 Stack reserve/commit 00100000/00000000 Heap reserve/commit 00001000/00000000 Number interesting RVAs 00000000 Name RVA Size ------------------ -------- -------- Exports 00001000 00000000 Imports 00000000 00000010 Resources 0010D740 00000F7F Exceptions 004FA000 00000064 Security 00504000 00000633 Fixups 004EE000 0000A6F8 Debug 00000000 00000000 Description 00505000 00003008 Global Ptr 000D7BD0 0000001C TLS 00000000 00000000 Callbacks 00000000 00000000 Bound Imports 00000000 00000000 Import Addr Table 00000000 00000000 Delayed Imports 00000000 00000000 COM Runtime 004FA888 00000820 reserved 00000000 00000000 Object table: # Name VirtSize RVA PhysSize Phys off Flags -- -------- -------- -------- -------- -------- -------- 01 00000000 00000000 7865742E 00000074 00000400 [] 02 00000000 60000020 6164722E 00006174 000D6200 [] 03 00000000 40000040 7461642E 00000061 0010DA00 [] 04 00000000 C0000040 6164702E 00006174 00463600 [] 05 00000000 40000040 6164692E 00006174 0046F000 [] 06 00000000 C0000040 74786574 00000000 00471000 [] 07 00000000 20000040 61746164 00000000 00472400 [] 08 00000000 40000040 7273722E 00000063 00477600 [] 09 00000000 40000040 6C65722E 0000636F 00477E00 [] Key to section flags: ERROR: Internal error at 0x42213f with base 0x400000 C:\MySQL\MySQL Server 5.6\lib> -------------------------------------------------- I'm using Delphi 7 and the code follows bellow: ... var libHandle: THandle; begin libHandle := LoadLibrary('C:\MySQL Server 5.6\lib\libmysql.dll'); ... @mysql_get_client_info := GetAddress('mysql_get_client_info'); // returns an Access Violation Error because the library isn't loaded correctly ... end; After the LoadLibrary() the libHandle still 0(zero) and if you call GetLastError() you'll get error code 193.
[3 May 2013 13:01]
MySQL Verification Team
It's your Delphi 7 a 64-bits application? Otherwise try the libmysql.dll 32-bits. Thanks.
[3 May 2013 13:38]
Fernando Pereira
1. Uninstalled the 64 bits MySQL. 2. Installed 32 bits MySQL. Then I tried again and got the same error. I'm using the windows installer, downloaded at http://dev.mysql.com/downloads/installer/ During the installation I've chosen the 32 bits architecture.
[3 May 2013 13:38]
Fernando Pereira
And Delphi 7 is a 32 bits application.
[3 May 2013 15:51]
MySQL Verification Team
Do you have access to a pure Win32 machine so you can test the same dll on it?. I have doubts about the Delphi LoadLibrary invokes a system Windows dll not 32-bits. Thanks.
[3 May 2013 17:15]
Fernando Pereira
Yes, I've access. So, I tried in a pure 32 bits machine (Windows v.7 32 bits). On that machine, the OS returns that the DLL was not created for Windows and contains an error on it. The function GetLastError() returns error code 193 too. I tried in a 64 bits machine with windows 7, it works. Even I selected 32 bits architecture in the installation wizard, it seems that still installing the 64 bits dll. Thanks
[3 May 2013 18:09]
Fernando Pereira
I had the same problem in another machine with Windows 8, 64 bits. Installing MySQL 5.1 it works perfectly.
[4 May 2013 0:37]
MySQL Verification Team
I tested both 64/32-bits installation with dumpbin tool and the were installed the correct dll's: E:\Program Files\MySQL\MySQL Server 5.6\lib>dir libmysql.dll O volume na unidade E é SECOND O Número de Série do Volume é 68A3-FC87 Pasta de E:\Program Files\MySQL\MySQL Server 5.6\lib 05/04/2013 15:04 4.712.448 libmysql.dll 1 arquivo(s) 4.712.448 bytes 0 pasta(s) 409.021.095.936 bytes disponíveis E:\Program Files\MySQL\MySQL Server 5.6\lib>dumpbin /headers libmysql.dll | findstr machine 8664 machine (x64) E:\Program Files\MySQL\MySQL Server 5.6\lib> -------------------------32 bit install--------------------------------- E:\Program Files (x86)\MySQL\MySQL Server 5.6\lib>dir libmysql.dll O volume na unidade E é SECOND O Número de Série do Volume é 68A3-FC87 Pasta de E:\Program Files (x86)\MySQL\MySQL Server 5.6\lib 05/04/2013 16:59 4.468.224 libmysql.dll 1 arquivo(s) 4.468.224 bytes 0 pasta(s) 408.961.613.824 bytes disponíveis E:\Program Files (x86)\MySQL\MySQL Server 5.6\lib>dumpbin /headers libmysql.dll | findstr machine 14C machine (x86) 32 bit word machine E:\Program Files (x86)\MySQL\MySQL Server 5.6\lib> Please check on your environment if exists another libmysql.dll installed in the search system path. Thanks.
[6 May 2013 12:25]
Fernando Pereira
I checked the system variable: PATH. There's no reference to Mysql in the path. By the way, I searched for another libmysql.dll but I didn't found another.
[22 May 2013 15:03]
Tonci Grgin
Fernando, I'm an old Delphi "freak" and checking against my ancient D6 code, library Miguel provided me with, loads. The code is: { Initialize MySQL dynamic library } function MySqlLoadLib: Boolean; begin if hDLL = 0 then begin hDLL := GetModuleHandle(PChar(DLL)); LibLoaded := False; if hDLL = 0 then begin hDLL := LoadLibrary(PChar(DLL)); LibLoaded := True; end; end; if hDLL <> 0 then begin @mysql_debug := GetProcAddress(hDLL,'mysql_debug'); @mysql_dump_debug_info := GetProcAddress(hDLL,'mysql_dump_debug_info'); ... @mysql_close := GetProcAddress(hDLL,'mysql_close'); @mysql_select_db := GetProcAddress(hDLL,'mysql_select_db'); ... @mysql_shutdown := GetProcAddress(hDLL,'mysql_shutdown'); @mysql_kill := GetProcAddress(hDLL,'mysql_kill'); ... @mysql_escape_string := GetProcAddress(hDLL,'mysql_escape_string'); @mysql_get_server_info := GetProcAddress(hDLL,'mysql_get_server_info'); ... @mysql_list_processes := GetProcAddress(hDLL,'mysql_list_processes'); @mysql_list_tables := GetProcAddress(hDLL,'mysql_list_tables'); ... @mysql_fetch_row := GetProcAddress(hDLL,'mysql_fetch_row'); @mysql_fetch_field := GetProcAddress(hDLL,'mysql_fetch_field'); ... @mysql_affected_rows := GetProcAddress(hDLL,'mysql_affected_rows'); ... Result := True; end else raise Exception.Create(Format(SLibraryNotFound,[DLL])); end; So I'd say problem is either in D7 or your setup, can't tell which.
[22 May 2013 15:19]
Tonci Grgin
TDUMP, D6 WinXP 32 bit, libmysql 5.6.11.0
Attachment: tdump.txt (text/plain), 15.87 KiB.
[23 Jun 2013 1:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".