Ik werk al een aardig tijdje met Mono/MonoDevelop in C# en maak daar tot nu toe alleen maar crossplatform console tooltjes mee.
Nu wil ik echter iets gaan bakken met een GUI, en aangezien er geen standaard winforms project in MonoDevelop zit was m'n eerste keuze op GtkSharp gevallen.
Alles wat ik hiermee bak runt onder Linux prima, geweldig en goed, echter, onder Windows start het niet.
Daar krijg ik een mooie 'Er is een fout opgetreden in GTKTest2 en het programma moet worden afgesloten.'.
In dit geval is GTKTest2 een applicatie met enkel een lege form er in, om te testen of het werkt.
Als ik naar 'Welke gegevens bevat dit rapport' ga, dan zie ik de volgende 'Handtekening van fout':
Als ik vervolgens naar 'Inhoud van foutenrapport' ga dan kom ik daar de volgende tekst tegen:
Daar ben ik niet erg veel wijzer van geworden dus ben ik maar eens op zoek gegaan naar een mogelijke oorzaak.
Wat blijkt? Er bestaan GtkSharp runtimes die je blijkbaar nodig hebt om GTK te gebruiken onder Windows.
Aldus heb ik de laatste gtk-sharp-2.12.10.win32.msi vanaf de Novell site (link) getrokken en deze geinstalleerd. De 'Target Gtk# version' in m'n Project Options staat ook op 2.12 dus dat zou moeten werken.
Helaas bleef hierna dezelfde fout terug komen. Mijn volgende stap was dus om de executable aan de Windows Debugging Tools (WinDbg) te voeren en te kijken waar het mis ging:
Een hele lading informatie en zo te zien worden ook de nodige dll's van GtkSharp netjes geladen, echter loopt ie niet door.
Nu heb ik niet extreem veel verstand van debuggers, C# en andere hippe dingen, dus ben ik at random gaan zoeken naar aanknopingspunten met behulp van Google.
Ik heb letterlijk honderden sites en oude bugs gevonden, doorgelezen, weggeklikt omdat de situatie anders was, enz...
Na enige tijd kwam ik er achter dat c0000139 waarschijnlijk het gene is waar hij over valt. Dit betekend namelijk 'Entry point not found', en dat tijdens het inladen van al deze dll's.
Nu gebeurt dit tussen libatk-1.0-0.dll (uit GtkSharp 2.12) en culture.dll (uit de .NET Framework 2.0) in, dus ik ben er niet helemaal zeker van op welke van de twee dit slaat.
Aangezien ik weinig tot geen relevante informatie kan vinden, en hier duidelijk ervaring te kort kom doe ik een beroep op mijn medeTweakers of jullie misschien een idee hebben waar ik nog naar kan kijken.
Mocht GtkSharp echt geen optie zijn dan kan ik uiteraard altijd nog proberen over te stappen op winforms, echter een eerste poging heeft me tot nu toe alleen nog maar wat zaken opgeleverd die niet eens wilden compileren.
Nu wil ik echter iets gaan bakken met een GUI, en aangezien er geen standaard winforms project in MonoDevelop zit was m'n eerste keuze op GtkSharp gevallen.
Alles wat ik hiermee bak runt onder Linux prima, geweldig en goed, echter, onder Windows start het niet.
Daar krijg ik een mooie 'Er is een fout opgetreden in GTKTest2 en het programma moet worden afgesloten.'.
In dit geval is GTKTest2 een applicatie met enkel een lege form er in, om te testen of het werkt.
Als ik naar 'Welke gegevens bevat dit rapport' ga, dan zie ik de volgende 'Handtekening van fout':
code:
1
2
3
| EventType : clr20r3 P1 : gtktest2.exe P2 : 1.0.3883.17956 P3 : 4c6ce428 P4 : gtk-sharp P5 : 2.12.0.0 P6 : 4bae45b2 P7 : 3c40 P8 : f P9 : system.dllnotfoundexception |
Als ik vervolgens naar 'Inhoud van foutenrapport' ga dan kom ik daar de volgende tekst tegen:
code:
1
2
3
4
5
6
7
8
9
10
| Exception Information Code: 0xe0434f4d Flags: 0x00000001 Record: 0x0000000000000000 Address: 0x000000007c812aeb System Information Windows NT 5.1 Build: 2600 CPU Vendor Code: 756E6547 - 49656E69 - 6C65746E CPU Version: 000006FB CPU Feature Code: 078BF9FF [..]vanaf hier een lading modules en memory area's[..] |
Daar ben ik niet erg veel wijzer van geworden dus ben ik maar eens op zoek gegaan naar een mogelijke oorzaak.
Wat blijkt? Er bestaan GtkSharp runtimes die je blijkbaar nodig hebt om GTK te gebruiken onder Windows.
Aldus heb ik de laatste gtk-sharp-2.12.10.win32.msi vanaf de Novell site (link) getrokken en deze geinstalleerd. De 'Target Gtk# version' in m'n Project Options staat ook op 2.12 dus dat zou moeten werken.
Helaas bleef hierna dezelfde fout terug komen. Mijn volgende stap was dus om de executable aan de Windows Debugging Tools (WinDbg) te voeren en te kijken waar het mis ging:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
| Microsoft (R) Windows Debugger Version 6.12.0002.633 X86 Copyright (c) Microsoft Corporation. All rights reserved. CommandLine: Z:\GTKTest2.exe Symbol search path is: SRV*c:\symbols*http://msdl.microsoft.com/download/symbols Executable search path is: ModLoad: 00400000 00408000 image00400000 ModLoad: 7c900000 7c9af000 ntdll.dll ModLoad: 79000000 7904a000 C:\WINDOWS\system32\mscoree.dll ModLoad: 7c800000 7c8f6000 C:\WINDOWS\system32\KERNEL32.dll (e70.a38): Break instruction exception - code 80000003 (first chance) eax=00241eb4 ebx=7ffd9000 ecx=00000000 edx=00000001 esi=00241f48 edi=00241eb4 eip=7c90120e esp=0012fb20 ebp=0012fc94 iopl=0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202 ntdll!DbgBreakPoint: 7c90120e cc int 3 0:000> g ModLoad: 77dd0000 77e6b000 C:\WINDOWS\system32\ADVAPI32.dll ModLoad: 77e70000 77f02000 C:\WINDOWS\system32\RPCRT4.dll ModLoad: 77fe0000 77ff1000 C:\WINDOWS\system32\Secur32.dll ModLoad: 603b0000 60416000 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\mscoreei.dll ModLoad: 77f60000 77fd6000 C:\WINDOWS\system32\SHLWAPI.dll ModLoad: 77f10000 77f59000 C:\WINDOWS\system32\GDI32.dll ModLoad: 7e410000 7e4a1000 C:\WINDOWS\system32\USER32.dll ModLoad: 77c10000 77c68000 C:\WINDOWS\system32\msvcrt.dll ModLoad: 76390000 763ad000 C:\WINDOWS\system32\IMM32.DLL ModLoad: 10000000 1003e000 c:\progra~1\citrix\system32\mfaphook.dll ModLoad: 67f50000 67fca000 C:\Program Files\Citrix\system32\CtxSbxHook.DLL ModLoad: 79e70000 7a400000 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll ModLoad: 78130000 781cb000 C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4027_x-ww_e69378d0\MSVCR80.dll ModLoad: 7c9c0000 7d1d7000 C:\WINDOWS\system32\shell32.dll ModLoad: 773d0000 774d3000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll ModLoad: 5d090000 5d12a000 C:\WINDOWS\system32\comctl32.dll ModLoad: 790c0000 79bb7000 C:\WINDOWS\assembly\NativeImages_v2.0.50727_32\mscorlib\6d667f19d687361886990f3ca0f49816\mscorlib.ni.dll ModLoad: 774e0000 7761d000 C:\WINDOWS\system32\ole32.dll ModLoad: 79060000 790bb000 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorjit.dll ModLoad: 68000000 68036000 C:\WINDOWS\system32\rsaenh.dll ModLoad: 64880000 6489a000 C:\Program Files\GtkSharp\2.12\bin\glibsharpglue-2.dll ModLoad: 685c0000 686b0000 C:\Program Files\GtkSharp\2.12\bin\libglib-2.0-0.dll ModLoad: 71ab0000 71ac7000 C:\WINDOWS\system32\WS2_32.DLL ModLoad: 71aa0000 71aa8000 C:\WINDOWS\system32\WS2HELP.dll ModLoad: 63a40000 63a84000 C:\Program Files\GtkSharp\2.12\bin\libgobject-2.0-0.dll ModLoad: 65c40000 65c4e000 C:\Program Files\GtkSharp\2.12\bin\libgthread-2.0-0.dll ModLoad: 5ad70000 5ada8000 C:\WINDOWS\system32\uxtheme.dll ModLoad: 74720000 7476c000 C:\WINDOWS\system32\MSCTF.dll ModLoad: 77c00000 77c08000 C:\WINDOWS\system32\version.dll ModLoad: 755c0000 755ee000 C:\WINDOWS\system32\msctfime.ime ModLoad: 61780000 61b49000 C:\Program Files\GtkSharp\2.12\bin\libgtk-win32-2.0-0.dll ModLoad: 65340000 65363000 C:\Program Files\GtkSharp\2.12\bin\libgdk_pixbuf-2.0-0.dll ModLoad: 6d580000 6d5c7000 C:\Program Files\GtkSharp\2.12\bin\libgio-2.0-0.dll ModLoad: 6dd00000 6dd0e000 C:\Program Files\GtkSharp\2.12\bin\libgmodule-2.0-0.dll ModLoad: 6c340000 6c3e9000 C:\Program Files\GtkSharp\2.12\bin\libgdk-win32-2.0-0.dll ModLoad: 68dc0000 69008000 C:\Program Files\GtkSharp\2.12\bin\libcairo-2.dll ModLoad: 63c80000 63cad000 C:\Program Files\GtkSharp\2.12\bin\libfontconfig-1.dll ModLoad: 6a440000 6a4af000 C:\Program Files\GtkSharp\2.12\bin\freetype6.dll ModLoad: 01290000 012b5000 C:\Program Files\GtkSharp\2.12\bin\libexpat.dll ModLoad: 65300000 65338000 C:\Program Files\GtkSharp\2.12\bin\libpixman-1-0.dll ModLoad: 6cc40000 6cc6a000 C:\Program Files\GtkSharp\2.12\bin\libpng13.dll ModLoad: 012c0000 012d3000 C:\Program Files\GtkSharp\2.12\bin\zlib1.dll ModLoad: 76380000 76385000 C:\WINDOWS\system32\MSIMG32.DLL ModLoad: 65580000 655c9000 C:\Program Files\GtkSharp\2.12\bin\libpango-1.0-0.dll ModLoad: 6d4c0000 6d4cd000 C:\Program Files\GtkSharp\2.12\bin\libpangocairo-1.0-0.dll ModLoad: 6b280000 6b298000 C:\Program Files\GtkSharp\2.12\bin\libpangowin32-1.0-0.dll ModLoad: 62940000 62960000 C:\Program Files\GtkSharp\2.12\bin\libatk-1.0-0.dll (e70.a38): Unknown exception - code c0000139 (first chance) ModLoad: 60340000 60348000 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\culture.dll (e70.a38): C++ EH exception - code e06d7363 (first chance) (e70.a38): CLR exception - code e0434f4d (first chance) (e70.a38): CLR exception - code e0434f4d (!!! second chance !!!) eax=0012f2d0 ebx=e0434f4d ecx=00000000 edx=00000028 esi=0012f35c edi=00183580 eip=7c812aeb esp=0012f2cc ebp=0012f320 iopl=0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202 KERNEL32!RaiseException+0x53: 7c812aeb 5e pop esi 0:000> g WARNING: Continuing a non-continuable exception (e70.a38): Break instruction exception - code 80000003 (first chance) eax=00000001 ebx=00000000 ecx=00000000 edx=0012f2fc esi=00000000 edi=79eda9ac eip=7c90120e esp=0012ee5c ebp=0012f308 iopl=0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202 ntdll!DbgBreakPoint: 7c90120e cc int 3 0:000> g eax=000000c0 ebx=00b1fe64 ecx=79f013dc edx=79f90dfc esi=00000000 edi=7ffd9000 eip=7c90e4f4 esp=00b1fe3c ebp=00b1fed8 iopl=0 nv up ei pl zr na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246 ntdll!KiFastSystemCallRet: 7c90e4f4 c3 ret 0:001> g ^ No runnable debuggees error in 'g' |
Een hele lading informatie en zo te zien worden ook de nodige dll's van GtkSharp netjes geladen, echter loopt ie niet door.
Nu heb ik niet extreem veel verstand van debuggers, C# en andere hippe dingen, dus ben ik at random gaan zoeken naar aanknopingspunten met behulp van Google.
Ik heb letterlijk honderden sites en oude bugs gevonden, doorgelezen, weggeklikt omdat de situatie anders was, enz...
Na enige tijd kwam ik er achter dat c0000139 waarschijnlijk het gene is waar hij over valt. Dit betekend namelijk 'Entry point not found', en dat tijdens het inladen van al deze dll's.
Nu gebeurt dit tussen libatk-1.0-0.dll (uit GtkSharp 2.12) en culture.dll (uit de .NET Framework 2.0) in, dus ik ben er niet helemaal zeker van op welke van de twee dit slaat.
Aangezien ik weinig tot geen relevante informatie kan vinden, en hier duidelijk ervaring te kort kom doe ik een beroep op mijn medeTweakers of jullie misschien een idee hebben waar ik nog naar kan kijken.
Mocht GtkSharp echt geen optie zijn dan kan ik uiteraard altijd nog proberen over te stappen op winforms, echter een eerste poging heeft me tot nu toe alleen nog maar wat zaken opgeleverd die niet eens wilden compileren.