Compiling GnuCash on Windows

Andreas Köhler andi5.py at gmx.net
Thu Nov 2 09:31:29 EST 2006


Hi,

Am Donnerstag, den 02.11.2006, 13:31 +0200 schrieb Ivars Grinbergs:
> Hello,
> 
> Yesterday got compiled and running version of GC on Win32.
> 
> Version: This copy was built from svn r15066 on 2006-11-01.

Too bad, you missed some fixes I submitted yesterday. You might try
remove your gnome installation directory and rerun install.sh with
recent packaging/win32 directory. You should also check for an _empty_
install-sh (hyphen) file in your repository and remove it if necessary
(will fix it soon). Meanwhile, do not put install.sh into a parent
directory of the repository.

> I did little modifications to custom.sh from
> 
> GTK_URL="$GNOME_WIN32_URL/gtk+/2.10/gtk+-2.10.3.zip"
> GTK_DEV_URL="$GNOME_WIN32_URL/gtk+/2.10/gtk+-dev-2.10.3.zip"
> 
> to
> 
> GTK_URL="$GNOME_WIN32_URL/gtk+/2.10/gtk+-2.10.6.zip"
> GTK_DEV_URL="$GNOME_WIN32_URL/gtk+/2.10/gtk+-dev-2.10.6.zip"
> 
> This solved me the problem (I think so) with crashing on filesistem 
> operations.

Yeah, fixed in r15076.

> Below are few more comments.
> 
> With regards,
> Ivars
> 
> Christian Stimming wrote:
> > I'd like to hear whether these things work, in case you have some time to 
> > check them in detail: 

Did you run gnucash from the MSYS shell or gnucash.bat?

[successes snip]
> Other problems observed:
> - I use Latvian language and location; there are problems with 
> entering/showing specific latvian characters;

Please be more specific. Is there a way for us (non-latvians) to
reproduce this? BTW, we still need to fix both, the installation and
usage of our localizations.

> - Actions->Scheduled Transactions->  FAILS with this backtrace on screen 
> within GDB:
> 
> GNU gdb 5.2.1
> Copyright 2002 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain 
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "i686-pc-mingw32"...
> (gdb) run
> Starting program: c:\gc\gnucash\bin/gnucash-bin.exe
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x6b072b01 in _libmsvcrt_a_iname ()
> (gdb) backtrace
> #0  0x6b072b01 in _libmsvcrt_a_iname ()
> #1  0x100516f0 in _PRETTY_FUNCTION__.28 ()
> #2  0x6b073034 in _libmsvcrt_a_iname ()
> #3  0x6b046dd4 in __RUNTIME_PSEUDO_RELOC_LIST__ ()
> #4  0x0077a51c in ?? ()
> #5  0x005fc9f4 in ?? ()
> #6  0x005e66f7 in ?? ()
> #7  0x005e5b39 in ?? ()
> #8  0x005e65eb in ?? ()
> #9  0x005e66d6 in ?? ()
> #10 0x00778000 in ?? ()
> #11 0x63054ab6 in gnc_ui_scheduled_xaction_dialog_create ()
>     at dialog-scheduledxaction.c:1250
> #12 0x005e3935 in ?? ()
> #13 0x005f6f35 in ?? ()
> #14 0x005f7cde in ?? ()
> #15 0x005f7f56 in ?? ()
> #16 0x6048b824 in _libws2_32_a_iname ()
> #17 0x005e3935 in ?? ()
> #18 0x005f6f35 in ?? ()
> #19 0x005f7cde in ?? ()
> #20 0x005f7f56 in ?? ()
> #21 0x606999e5 in _libws2_32_a_iname ()
> #22 0x6058acec in _libws2_32_a_iname ()
> #23 0x6058aff5 in _libws2_32_a_iname ()
> #24 0x605774a2 in _libws2_32_a_iname ()
> #25 0x005e3935 in ?? ()
> #26 0x005f6b66 in ?? ()
> #27 0x005f7a3c in ?? ()
> #28 0x005f7f56 in ?? ()
> #29 0x60699b74 in _libws2_32_a_iname ()
> #30 0x60574651 in _libws2_32_a_iname ()
> #31 0x6057593d in _libws2_32_a_iname ()
> #32 0x6b07098e in _libmsvcrt_a_iname ()
> #33 0x1001d8f7 in gpa_radiobutton_update ()
> #34 0x1001edcb in gpa_p2f_entry_changed_cb ()
> #35 0x1001efaa in gp_gc_set_font ()
> #36 0x60574eae in _libws2_32_a_iname ()
> #37 0x00784a12 in ?? ()
> #38 0x00401746 in inner_main (closure=0x0, argc=1, argv=0xd16ea8)
>     at gnucash-bin.c:493
> #39 0x65e2564d in scm_boot_guile (argc=1, argv=0xd16ea8,
>     main_func=0x401600 <inner_main>, closure=0x0) at init.c:635
> #40 0x00401e26 in main (argc=1, argv=0xd16ea8) at gnucash-bin.c:549
> (gdb)

You have to admit that this stack trace is not extraordinary useful ;-)
But yesterday I managed to improve, maybe you can try to do the same?
Here is what I did:

* download and unpack `pd' and `MMP' from http://www.trapkit.de, you
will need the Microsoft .NET Framework Version 2.0 to run the latter
* make gnucash crash within gdb
* determine the PID of the running gnucash-bin process (Ctrl+Alt+Del)
* open a shell and enter `pd -p $pid > my.dump', where $pid is your pid
* open mmp, open my.dump, let it parse it (click away errors you get,
ignore "please wait" dialogs that do not go away and also crashes when
you try to close mmp after your work)
* see frame #4, it says 0x0077a51c... try to find the dll that got
mapped there and also its base address (one of the first columns)
* enter `add-symbol-file $mydll $myaddr' into gdb, where $mydll might be
libgncmod-gnome-utils-0.dll or such, and myaddr the base address mmp
told you; confirm with "y"
* bt again

Success?

Any suggestions how to ease this process?

> - I also can't build gnucash.pot file as proposed by doc/TRANSLATION_HOWTO:
> 
> usr at host ~
> $ cd /c/gc/repos/po/
> 
> usr at host /c/gc/repos/po
> $ make gnucash.pot
> INTLTOOL_EXTRACT=../intltool-extract srcdir=. ../intltool-update 
> --gettext-package gnucash --pot
> 
>  *** The intltool-extract script wasn't found!
>  *** Without it, intltool-update can not generate files.

This _may_ be due to the empty install-sh file, but I do not know.

> >> Also, in the command prompt window is the following:
> >>
> >> gnucash: [E] "Failed to fork child process."
> >>     
> >
> > This is probably because gnucash tries to save the file in compressed form, 
> > which requires a separate gzip process that won't work on windows. In short, 
> > in the preferences please uncheck the checkbox under General -> File -> 
> > Compress file. Does saving work, then?
> >
> >   
> Previously I have had problem to open data file created on Knoppix with 
> GC 2.0.1. When I unziped that data file, I was able to open it on Win32 
> with GC 2.0.2.
> >> Is there a way to generate a backtrace in Windows?
> >>     
> >
> > Yes, if you install gdb. It's available somewhere on mingw.org. Then you need 
> > to modify the gnucash startup script so that it calls gdb instead of 
> > gnucash.exe. Then, in gdb you start gnucash by "run". This is explained in 
> > the file HACKING as well.
> >   
> Is the backtrace given above the one, which is needed? I mean, did I do 
> correctly, to get backtarce?

Good luck and thanks so far!

-- andi5




More information about the gnucash-devel mailing list