2012年11月21日 星期三

google earth 7

中文版請看這裡
I'm running openSUSE 12.2 x86_64 system with nvidia proprietary driver
$  uname -r
3.4.11-2.16-desktop
$ rpm -qa | grep nvidia
nvidia-gfxG02-kmp-desktop-304.43_k3.4.6_2.10-19.1.x86_64
nvidia-computeG02-304.43-20.1.x86_64
x11-video-nvidiaG02-304.43-20.1.x86_64

Download Google Earth from http://www.google.com/intl/zh-TW/earth/index.html
Use zypper to install it
# zypper in google-earth-stable_current_x86_64.rpm 
正在載入套件庫資料...
讀取已安裝的套件...
正在解決套件相依性...

將會安裝下列新的套件:
  google-earth-stable 

1  新套件將被安裝.
全部下載大小: 39.3 MiB。 完成操作後,將增加 126.0 MiB 的使用。
要繼續嗎? [y/n/?] (y): y
正在取出 套件 google-earth-stable-7.0.1.8244-0.x86_64
                                   (1/1),  39.3 MiB (已解開 126.0 MiB)
正在取出 套件 google-earth-stable-7.0.1.8244-0.x86_64
                                   (1/1),  39.3 MiB (已解開 126.0 MiB)
正在安裝: google-earth-stable-7.0.1.8244-0 ....................[完成]
其他 rpm 輸出:
warning: commands will be executed using /bin/sh
job 3 at 2012-11-21 00:23
Can't open /var/run/atd.pid to signal atd. No atd running?


Run google-earth in konsole (or other terminal)
$ google-earth
Google Earth has caught signal 11.



We apologize for the inconvenience, but Google Earth has crashed.
 This is a bug in the program, and should never happen under normal
 circumstances. A bug report and debugging data have been written
 to this text file:

    /home/ray122/.googleearth/crashlogs/crashlog-50abae63.txt

Please include this file if you submit a bug report to Google.


See debugging deta
$ cat /home/ray122/.googleearth/crashlogs/crashlog-50abae63.txt
Major Version 7
Minor Version 0
Build Number 0001
Build Date Oct 29 2012
Build Time 19:13:39
OS Type 3
OS Major Version 3
OS Minor Version 4
OS Build Version 11
OS Patch Version 16
Crash Signal 11
Crash Time 1353428579
Up Time 0.073919

Stacktrace from glibc:
./libgoogleearth_free.so(+0x1e9cfb)[0xf7572cfb]
./libgoogleearth_free.so(+0x1e9f43)[0xf7572f43]
linux-gate.so.1(__kernel_sigreturn+0x0)[0xf771d400]


Debugging
$ cd /opt/google/earth/free/


$ export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

$ gdb ./googleearth-bin
GNU gdb (GDB) SUSE (7.4.50.20120603-2.1.2)
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
For bug reporting instructions, please see:
...
Reading symbols from /opt/google/earth/free/googleearth-bin...(no debugging symbols found)...done.
(gdb) r
Starting program: /opt/google/earth/free/googleearth-bin 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0xf42fd0c8 in ?? () from /usr/lib/libexpat.so.1
Missing separate debuginfos, use: zypper install google-earth-stable-debuginfo-7.0.1.8244-0.x86_64
(gdb) bt
#0  0xf42fd0c8 in ?? () from /usr/lib/libexpat.so.1
#1  0xf42fd203 in ?? () from /usr/lib/libexpat.so.1
#2  0xf42fd23c in ?? () from /usr/lib/libexpat.so.1
#3  0xf42ffb69 in ?? () from /usr/lib/libexpat.so.1
#4  0xf4300c11 in ?? () from /usr/lib/libexpat.so.1
#5  0xf4301ab2 in ?? () from /usr/lib/libexpat.so.1
#6  0xf4305e0e in XML_ParseBuffer () from /usr/lib/libexpat.so.1
#7  0xf6fea471 in FcConfigParseAndLoad ()
   from /usr/lib/libfontconfig.so.1
#8  0xf6fea761 in FcConfigParseAndLoad ()
   from /usr/lib/libfontconfig.so.1
#9  0xf6feaa17 in ?? () from /usr/lib/libfontconfig.so.1
#10 0xf4300815 in ?? () from /usr/lib/libexpat.so.1
#11 0xf4301ab2 in ?? () from /usr/lib/libexpat.so.1
#12 0xf43036b0 in ?? () from /usr/lib/libexpat.so.1
#13 0xf4303e52 in ?? () from /usr/lib/libexpat.so.1
#14 0xf4305e0e in XML_ParseBuffer () from /usr/lib/libexpat.so.1
#15 0xf6fea471 in FcConfigParseAndLoad ()
   from /usr/lib/libfontconfig.so.1
#16 0xf6fdee46 in FcInitLoadConfig ()
   from /usr/lib/libfontconfig.so.1
#17 0xf6fdef69 in FcInitLoadConfigAndFonts ()
   from /usr/lib/libfontconfig.so.1
#18 0xf6fdf1ed in FcInit () from /usr/lib/libfontconfig.so.1
#19 0xf739202f in qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) () from ./libQtGui.so.4
#20 0xf730cb2a in QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) () from ./libQtGui.so.4
#21 0xf730da53 in QApplication::QApplication(int&, char**, int) ()
   from ./libQtGui.so.4
#22 0xf7ec1e79 in earth::client::Application::Application(int&, char**) () from ./libgoogleearth_free.so
---Type  to continue, or q  to quit---
#23 0xf7e2e7ff in ?? () from ./libgoogleearth_free.so
#24 0xf7e2ebb9 in earthmain () from ./libgoogleearth_free.so
#25 0x0804877b in ?? ()
#26 0xf50ff3d5 in __libc_start_main () from /lib/libc.so.6
#27 0x080486c1 in ?? ()
(gdb)

We need some debuginfo packages
make sure you have enabled debug repos
#  zypper in libexpat1-debuginfo-32bit fontconfig-debuginfo-32bit

yes, you need 32-bit packages even you are running a 64-bit system

run gdb again
$ gdb ./googleearth-bin
GNU gdb (GDB) SUSE (7.4.50.20120603-2.1.2)
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
For bug reporting instructions, please see:
...
Reading symbols from /opt/google/earth/free/googleearth-bin...(no debugging symbols found)...done.
(gdb) r
Starting program: /opt/google/earth/free/googleearth-bin 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
poolGrow (pool=pool@entry=0x808e7b0) at lib/xmlparse.c:6215
6215    lib/xmlparse.c: 沒有此一檔案或目錄.
Missing separate debuginfos, use: zypper install google-earth-stable-debuginfo-7.0.1.8244-0.x86_64
(gdb) bt
#0  poolGrow (pool=pool@entry=0x808e7b0) at lib/xmlparse.c:6215
#1  0xf42fd203 in poolAppend (pool=pool@entry=0x808e7b0, enc=enc@entry=0xf4f46c00, 
    ptr=ptr@entry=0x8093383 "pixelsize\" compare=\"less_eq\">\n\t\t\t\t0\n\t\t


\n", ' ' , "\n", ' ' , "false\n", ' ' , "\n", ' ' , "    end=end@entry=0x809338c "\" compare=\"less_eq\">\n\t\t\t\t0\n\t\t\n", ' ' , "\n", ' ' , "false\n", ' ' , "\n", ' ' , "\n"...) at lib/xmlparse.c:6148
#2  0xf42fd23c in poolStoreString (pool=pool@entry=0x808e7b0, enc=enc@entry=0xf4f46c00, 
    ptr=0x8093383 "pixelsize\" compare=\"less_eq\">\n\t\t\t\t0\n\t\t\n", ' ' , "\n", ' ' , "false\n", ' ' , "\n", ' ' , "    end=0x809338c "\" compare=\"less_eq\">\n\t\t\t\t0\n\t\t\n", ' ' , "\n", ' ' , "false\n", ' ' , "\n", ' ' , "\n"...) at lib/xmlparse.c:6201
#3  0xf42ffb69 in storeAtts (parser=parser@entry=0x808e610, enc=enc@entry=0xf4f46c00, 
    attStr=0x8093377 "\n\t\t\t\t0\n\t\t\n", ' ' , "\n", ' ' , "false\n", ' ' , "\n", ' ' , "#4  0xf4300c11 in doContent (parser=parser@entry=0x808e610, startTagLevel=startTagLevel@entry=0, enc=0xf4f46c00, 
    s=0x8093377 "\n\t\t\t\t0\n\t\t\n", ' ' , "\n", ' ' , "false\n", ' ' , "\n", ' ' , "    s@entry=0x80932b8 ' ' , "Lucida Sans Typewriter\n", ' ' , "Lucida Sans\n", ' ' , "Lucida Bright\n", ' ' , "\n\t\t#5  0xf4301ab2 in contentProcessor (parser=0x808e610, 
    start=0x80932b8 ' ' , "Lucida Sans Typewriter\n", ' ' , "Lucida Sans\n", ' ' , "Lucida Bright\n", ' ' , "\n\t\t#6  0xf4305e0e in XML_ParseBuffer (parser=parser@entry=0x808e610, len=len@entry=2812, isFinal=isFinal@entry=0) at lib/xmlparse.c:1651
#7  0xf6fea471 in IA__FcConfigParseAndLoad (config=config@entry=0x8080b50, name=0x808e3b0 "/etc/fonts/conf.d/11-suse-hinting.conf", complain=complain@entry=0) at fcxml.c:2782
#8  0xf6fea761 in FcConfigParseAndLoadDir (complain=0, dir=0x8084f30 "/etc/fonts/conf.d", name=0xffffb99c "conf.d", config=0x8080b50) at fcxml.c:2668
#9  IA__FcConfigParseAndLoad (config=0x8080b50, name=name@entry=0xffffb99c "conf.d", complain=0) at fcxml.c:2718
#10 0xf6feaa17 in FcParseInclude (parse=0xffffb8c0) at fcxml.c:1849
#11 FcEndElement (userData=0xffffb8c0, name=0x80807a8 "include") at fcxml.c:2387
#12 0xf4300815 in doContent (parser=parser@entry=0x8080f20, startTagLevel=startTagLevel@entry=0, enc=0xf4f46c00, 
    s=0x808218e "\n\n\n\n\t/var/cache/fontconfig\n\t~/.fontconfig\n\n\t\n\n\n\n\n\n\n<!--\n\tDO NOT EDIT THIS FILE.\n\tIT WILL BE REPLACED WHEN "..., end=0x8082f00 "", nextPtr=0x8080f38) at lib/xmlparse.c:3739
#16 0xf4305e0e in XML_ParseBuffer (parser=parser@entry=0x8080f20, len=len@entry=5320, isFinal=isFinal@entry=0) at lib/xmlparse.c:1651
#17 0xf6fea471 in IA__FcConfigParseAndLoad (config=config@entry=0x8080b50, name=name@entry=0x0, complain=complain@entry=1) at fcxml.c:2782
#18 0xf6fdee46 in IA__FcInitLoadConfig () at fcinit.c:67
#19 0xf6fdef69 in IA__FcInitLoadConfigAndFonts () at fcinit.c:101
#20 0xf6fdf1ed in IA__FcInit () at fcinit.c:124
#21 0xf739202f in qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) () from ./libQtGui.so.4
#22 0xf730cb2a in QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) () from ./libQtGui.so.4
#23 0xf730da53 in QApplication::QApplication(int&, char**, int) () from ./libQtGui.so.4
#24 0xf7ec1e79 in earth::client::Application::Application(int&, char**) () from ./libgoogleearth_free.so
#25 0xf7e2e7ff in ?? () from ./libgoogleearth_free.so
#26 0xf7e2ebb9 in earthmain () from ./libgoogleearth_free.so
---Type  to continue, or q  to quit---
#27 0x0804877b in ?? ()
#28 0xf50ff3d5 in __libc_start_main () from /lib/libc.so.6
#29 0x080486c1 in ?? ()
(gdb)

You can see the some fonconfig settings make the Segmentation fault
in #7 ...   "/etc/fonts/conf.d/11-suse-hinting.conf"
Remove the file /etc/fonts/conf.d/11-suse-hinting.conf
# rm  /etc/fonts/conf.d/11-suse-hinting.conf

run gdb again you can see /etc/fonts/conf.d/65-fonts-persian.conf will need to be deleted
# rm  /etc/fonts/conf.d/65-fonts-persian.conf

keep debugging till google-earth works

Some screenshots:
Startup:
 
 Panoramio photo:

 Street view:

Flight simulator:

Navigating sky:

3D building:


Fonts looks good, libQT* need no more replacement.
Non-latin characters can show-up properly.

Also some  defects:
1. some pictures can't be seen

2. almost all links in pop-up windows can't click to link to target
You have to right click the link, choose "open in new window" to link to the target

3. flash is not working
4. crash sometimes...

沒有留言: