LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: nightsuns

wxFlashget向外发布第一个版本

[复制链接]
发表于 2007-10-5 08:48:51 | 显示全部楼层
楼主应该听过dll hell吧?

开源的好处在于即使上游没有采取措施,我也可以修复bug, 比如这个bug
*** glibc detected *** ./wxFlashGet: double free or corruption (out): 0x08b27340 ***

几乎可以肯定是delete了两次,你不给我源代码,我怎么办呢?微软的开发队伍数以万计, 代码质量还是有保障的,而且还有商业道德可言。个人闭源的代码根本就不值得信赖。
回复 支持 反对

使用道具 举报

发表于 2007-10-5 08:49:41 | 显示全部楼层
建议不要用wxFlashGet,有隐藏的法律风险。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-5 09:06:39 | 显示全部楼层
这是根据 omegao 提供的 Backtrace 追踪到的函数调用:

.text:080D649E                 mov     eax, 14h
.text:080D64A3                 mov     [esp+4], eax
.text:080D64A7                 mov     [esp], ebx
.text:080D64AA                 call    _ZN21wxPropertySheetDialog13CreateButtonsEi
.text:080D64AF                 mov     [esp], ebx
.text:080D64B2                 call    _ZN11COptionsDlg17CreateGUIControlsEv

以下的调用都是在gtk里面

我有在 fedro6,fedro7,ubuntu6.04,ubuntu7.10,debian3.0 都测试过,我在干净的这些系统上都运行正常。
我猜测是UI库的二进制兼容性问题上。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-5 09:25:47 | 显示全部楼层
Post by bookstack
楼主应该听过dll hell吧?

开源的好处在于即使上游没有采取措施,我也可以修复bug, 比如这个bug
*** glibc detected *** ./wxFlashGet: double free or corruption (out): 0x08b27340 ***

几乎可以肯定是delete了两次,你不给我源代码,我怎么办呢?微软的开发队伍数以万计, 代码质量还是有保障的,而且还有商业道德可言。个人闭源的代码根本就不值得信赖。


我想如果你是程序员,你一定碰到过,某些开源的软件,如果你将二进制的版本,在一个linux发行版上拷到另一个版本上会产生类似的内存错误吧?

这不是你能修复的,这不是代码本身的问题。
比如编译器的不同的优化级别都会对于这些内存结构造成影响,即使是相同的软件环境。
回复 支持 反对

使用道具 举报

发表于 2007-10-5 10:15:17 | 显示全部楼层
程序一闪而过
系统Debian(SID)
回复 支持 反对

使用道具 举报

发表于 2007-10-5 11:20:05 | 显示全部楼层
漂亮的闪过


  1. $ ./wxFlashGet
  2. [M](XPP::Runtime::ServiceManager):
  3.         name:           XPP::Service::ServiceSet
  4.         version:        0.1Bate
  5.         workdir:        


  6. [T](XPP::Service::FileTransferService): config data not existing, now creating a new one
  7. [M](XPP::Runtime::ServiceManager):
  8.         name:           XPP::Service::FileTransferService
  9.         version:        0.1Bate
  10.         workdir:        /mnt/sda5/home/hg/XPPEnv/Services/FileTransferService


  11. [M](XPP::Runtime::ServiceManager):
  12.         name:           XPP::Service::VirtualSiteService
  13.         version:        0.1Bate
  14.         workdir:        


  15. *** glibc detected *** ./wxFlashGet: free(): invalid pointer: 0x000000000110d8b0 ***
  16. ======= Backtrace: =========
  17. /lib/libc.so.6[0x2b806ffcdb1c]
  18. /lib/libc.so.6[0x2b806ffcdb1c]
  19. /lib/libc.so.6(__libc_free+0x76)[0x2b806ffcf836]
  20. ./wxFlashGet[0x59ee82]
  21. ./wxFlashGet[0x5d4aa4]
  22. ./wxFlashGet[0x546be6]
  23. ./wxFlashGet[0x48dc3d]
  24. ./wxFlashGet[0x49c2a4]
  25. ./wxFlashGet[0x6eca1c]
  26. ./wxFlashGet[0x6ed14f]
  27. ./wxFlashGet[0x6ed443]
  28. ./wxFlashGet[0x60c639]
  29. ./wxFlashGet[0x573814]
  30. /usr/X11R6/lib64/libglib-2.0.so.0[0x2b806ee751fb]
  31. /usr/X11R6/lib64/libglib-2.0.so.0(g_main_context_dispatch+0x1e3)[0x2b806ee74ab3]
  32. /usr/X11R6/lib64/libglib-2.0.so.0[0x2b806ee77d8d]
  33. /usr/X11R6/lib64/libglib-2.0.so.0(g_main_loop_run+0x199)[0x2b806ee78069]
  34. /usr/X11R6/lib64/libgtk-x11-2.0.so.0(gtk_main+0xa2)[0x2b806cbf76c2]
  35. ./wxFlashGet[0x6469c0]
  36. ./wxFlashGet[0x5c83a4]
  37. ./wxFlashGet[0x6a3cf0]
  38. ./wxFlashGet[0x44c2a2]
  39. /lib/libc.so.6(__libc_start_main+0xf4)[0x2b806ff7e5a4]
  40. ./wxFlashGet(__gxx_personality_v0+0x3e9)[0x41f2d9]
  41. ======= Memory map: ========
  42. 00400000-009de000 r-xp 00000000 08:05 1580516                            /mnt/sda5/home/hg/scripts-app/wxFlashGet_linux_gtk/wxFlashGet
  43. 00add000-00af7000 rw-p 005dd000 08:05 1580516                            /mnt/sda5/home/hg/scripts-app/wxFlashGet_linux_gtk/wxFlashGet
  44. 00af7000-01f2c000 rw-p 00af7000 00:00 0                                  [heap]
  45. 40000000-40001000 ---p 40000000 00:00 0
  46. 40001000-40801000 rw-p 40001000 00:00 0
  47. 40801000-40802000 ---p 40801000 00:00 0
  48. 40802000-41002000 rw-p 40802000 00:00 0
  49. 41002000-41003000 ---p 41002000 00:00 0
  50. 41003000-41803000 rw-p 41003000 00:00 0
  51. 41803000-41804000 ---p 41803000 00:00 0
  52. 41804000-42004000 rw-p 41804000 00:00 0
  53. 2aaaaaaac000-2aaaaaaae000 rw-p 2aaaaaaac000 00:00 0
  54. 2aaaaabb1000-2aaaaabb7000 r-xp 00000000 08:03 14364593                   /usr/lib64/gtk-2.0/2.10.0/loaders/libpixbufloader-xpm.so
  55. 2aaaaabb7000-2aaaaadb6000 ---p 00006000 08:03 14364593                   /usr/lib64/gtk-2.0/2.10.0/loaders/libpixbufloader-xpm.so
  56. 2aaaaadb6000-2aaaaadb8000 rw-p 00005000 08:03 14364593                   /usr/lib64/gtk-2.0/2.10.0/loaders/libpixbufloader-xpm.so
  57. 2aaaaadb8000-2aaaaae18000 rw-s 00000000 00:08 182910984                  /SYSV00000000 (deleted)
  58. 2aaaaae18000-2aaaaae1b000 rw-s 00000000 00:08 182943753                  /SYSV00000000 (deleted)
  59. 2aaaaae1b000-2aaaaae1d000 r--s 00000000 08:03 13132776                   /var/cache/fontconfig/3830d5c3ddfd5cd38a049b759396e72e-x86-64.cache-2
  60. 2aaaaae1d000-2aaaaae26000 r--s 00000000 08:05 1615317                    /mnt/sda5/home/hg/.fontconfig/98af5f945cb59f9d7bd2b63046f7ec7f-x86-64.cache-2
  61. 2aaaaae26000-2aaaaae8b000 r--s 00000000 08:03 13132791                   /var/cache/fontconfig/df311e82a1a24c41a75c2c930223552e-x86-64.cache-2
  62. 2aaaaae8b000-2aaaaaef0000 r--s 00000000 08:03 13150325                   /var/cache/fontconfig/17090aa38d5c6f09fb8c5c354938f1d7-x86-64.cache-2
  63. 2aaaaaef0000-2aaaaaef6000 r--s 00000000 08:03 13150942                   /var/cache/fontconfig/47547d49ce348f462821da1967db2a1a-x86-64.cache-2
  64. 2aaaaaef6000-2aaaaaefb000 r--s 00000000 08:03 13132775                   /var/cache/fontconfig/8bfda6d5bb0efdfc63b0e734c8bffdf5-x86-64.cache-2
  65. 2aaaaaefb000-2aaaaaf00000 r--s 00000000 08:03 10884976                   /var/cache/fontconfig/d62e99ef547d1d24cdb1bd22ec1a2976-x86-64.cache-2
  66. 2aaaaaf00000-2aaaaaf08000 r--s 00000000 08:03 11449560                   /var/cache/fontconfig/f73c51d6200a78c2054c26a5b2398976-x86-64.cache-2
  67. 2aaaaaf08000-2aaaaaf0e000 r--s 00000000 08:03 13151984                   /var/cache/fontconfig/61c91b4f4892ffae4bc0efef540a1e5d-x86-64.cache-2
  68. 2aaaaaf0e000-2aaaaaf26000 r--s 00000000 08:03 13152222                   /var/cache/fontconfig/2cbcbb3658f7d41c567f14136a5d7cf4-x86-64.cache-2
  69. 2aaaaaf26000-2aaaaaf37000 r--s 00000000 08:03 10939832                   /var/cache/fontconfig/4b5cf4386f1cde02a336ba961b4ac82d-x86-64.cache-2
  70. 2aaaaaf37000-2aaaaaf3f000 r--s 00000000 08:03 13152774                   /var/cache/fontconfig/12b26b760a24f8b4feb03ad48a333a72-x86-64.cache-2
  71. 2aaaaaf3f000-2aaaaaf57000 r--s 00000000 08:03 13153028                   /var/cache/fontconfig/ca6eb598bc8b0a6c66fAborted
复制代码
回复 支持 反对

使用道具 举报

发表于 2007-10-5 18:04:36 | 显示全部楼层
Post by nightsuns
我想如果你是程序员,你一定碰到过,某些开源的软件,如果你将二进制的版本,在一个linux发行版上拷到另一个版本上会产生类似的内存错误吧?

这不是你能修复的,这不是代码本身的问题。
比如编译器的不同的优化级别都会对于这些内存结构造成影响,即使是相同的软件环境。


不要在系统提供的库上开发,单独编译一份依赖的运行库,并且都附上,很多非开源商业程序都是这么做的。wx的二进制兼容性是很糟糕的,单独编译一份gtk和wx,和程序一起发布,应该可以解决不少二进制兼容问题。
ps,有些程序为了更好的稳定性,libc和libstdc++都附上了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-5 20:11:53 | 显示全部楼层
nightsuns@debian:~/wxFlashGet_linux_gtk$ ldd wxFlashGet
        libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0x40024000)
        libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x4030e000)
        libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x4038f000)
        libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x403a9000)
        libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x403bf000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0x403eb000)
        libXrender.so.1 => /usr/lib/libXrender.so.1 (0x403f9000)
        libXi.so.6 => /usr/lib/libXi.so.6 (0x40401000)
        libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x40409000)
        libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x4040c000)
        libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x40415000)
        libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x4041a000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0x40455000)
        libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x40541000)
        libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x4057b000)
        libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x4057e000)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x40582000)
        libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x40614000)
        libSM.so.6 => /usr/lib/libSM.so.6 (0x40618000)
        libpng12.so.0 => /usr/lib/libpng12.so.0 (0x40621000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0x40644000)
        libz.so.1 => /usr/lib/libz.so.1 (0x40664000)
        libdl.so.2 => /lib/libdl.so.2 (0x40678000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x4067c000)
        libm.so.6 => /lib/libm.so.6 (0x40762000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40786000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x40791000)
        libc.so.6 => /lib/libc.so.6 (0x407e3000)
        librt.so.1 => /lib/librt.so.1 (0x408fe000)
        libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x40911000)
        libcairo.so.2 => /usr/lib/libcairo.so.2 (0x4091a000)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x4097c000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0x409e6000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x409e9000)
        libICE.so.6 => /usr/lib/libICE.so.6 (0x409ef000)
        /lib/ld-linux.so.2 (0x40000000)
        libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x40a07000)

这个一闪而过是wx与gtk之间的兼容性问题。wx已经是静态链接了。
回复 支持 反对

使用道具 举报

发表于 2007-10-5 22:23:13 | 显示全部楼层
在红旗桌面6下不能运行,有依赖问题
libexp*.so
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-5 23:30:56 | 显示全部楼层
Post by sjchenkan
在红旗桌面6下不能运行,有依赖问题
libexp*.so


这种问题一般来说 用 ln -s 可以解决,是版本号的问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表