写出一个超强的lighttpd模块

发布: 2008-05-28 20:23

终于找到问题了
在我的代码里有这么一段,
char * str ; str = …………………………..;



char * k = malloc( strlen( k ) + 1 )
strcpy( k , str )

而这段代码是在一个动态链接库中的 xxx.so
这样一来,那个strcpy之后,程序的 堆 全被写乱套了,程序就会出来下面这些乱七八糟的错误了。

######################

*** glibc detected *** /serv/lighttpd1418/sbin/lighttpd: free(): invalid next size (fast): 0×080a27d8 ***
======= Backtrace: =========
/lib/libc.so.6[0xb7e72312]
/lib/libc.so.6(cfree+0×89)[0xb7e739c9]
/serv/lighttpd1418//lib/mod_stats.so(hash_walk_func+0×360)[0xb7dda210]
/serv/lighttpd1418//lib/mod_stats.so(hash_table_map+0×3d)[0xb7ddaf3d]
/serv/lighttpd1418//lib/mod_stats.so(stat_table_dump_thread+0×129)[0xb7dd9de9]
/lib/libpthread.so.0[0xb7b38e5a]
/lib/libc.so.6(clone+0×5e)[0xb7ecc91e]
======= Memory map: ========
08048000-0806d000 r-xp 00000000 08:08 163125 /serv/lighttpd1418/sbin/lighttpd
0806d000-0806e000 rw-p 00024000 08:08 163125 /serv/lighttpd1418/sbin/lighttpd
0806e000-080b0000 rw-p 0806e000 00:00 0 [heap]
b7100000-b7121000 rw-p b7100000 00:00 0
b7121000-b7200000 —p b7121000 00:00 0
b72b6000-b72b7000 —p b72b6000 00:00 0
b72b7000-b7ab6000 rw-p b72b7000 00:00 0
b7ab6000-b7ac9000 r-xp 00000000 08:08 7996 /usr/lib/libz.so.1.2.3
b7ac9000-b7aca000 rw-p 00012000 08:08 7996 /usr/lib/libz.so.1.2.3
b7aca000-b7aee000 r-xp 00000000 08:08 2241 /lib/libm-2.5.so
b7aee000-b7af0000 rw-p 00023000 08:08 2241 /lib/libm-2.5.so
b7af0000-b7b02000 r-xp 00000000 08:08 2248 /lib/libnsl-2.5.so
b7b02000-b7b04000 rw-p 00011000 08:08 2248 /lib/libnsl-2.5.so
b7b04000-b7b06000 rw-p b7b04000 00:00 0
b7b06000-b7b0b000 r-xp 00000000 08:08 2222 /lib/libcrypt-2.5.so
b7b0b000-b7b0d000 rw-p 00004000 08:08 2222 /lib/libcrypt-2.5.so
b7b0d000-b7b34000 rw-p b7b0d000 00:00 0
b7b34000-b7b47000 r-xp 00000000 08:08 2280 /lib/libpthread-2.5.so
b7b47000-b7b49000 rw-p 00012000 08:08 2280 /lib/libpthread-2.5.so
b7b49000-b7b4b000 rw-p b7b49000 00:00 0
b7b4b000-b7ce9000 r-xp 00000000 08:08 129653 /usr/lib/libmysqlclient_r.so.15.0.0
b7ce9000-b7d2d000 rw-p 0019e000 08:08 129653 /usr/lib/libmysqlclient_r.so.15.0.0
b7d2d000-b7d2e000 rw-p b7d2d000 00:00 0
b7d2e000-b7dc2000 r-xp 00000000 08:08 7538 /usr/lib/libglib-2.0.so.0.1200.11
b7dc2000-b7dc3000 rw-p 00093000 08:08 7538 /usr/lib/libglib-2.0.so.0.1200.11
b7dc3000-b7dce000 r-xp 00000000 08:08 2235 /lib/libgcc_s.so.1
b7dce000-b7dcf000 rw-p 0000a000 08:08 2235 /lib/libgcc_s.so.1
b7dcf000-b7dd1000 r-xp 00000000 08:08 163049 /serv/lighttpd1418/lib/mod_staticfile.so
b7dd1000-b7dd2000 rw-p 00002000 08:08 163049 /serv/lighttpd1418/lib/mod_staticfile.so
b7dd2000-b7dd6000 r-xp 00000000 08:08 163051 /serv/lighttpd1418/lib/mod_dirlisting.so
b7dd6000-b7dd7000 rw-p 00003000 08:08 163051 /serv/lighttpd1418/lib/mod_dirlisting.so
b7dd7000-b7e0c000 r-xp 00000000 08:08 163119 /serv/lighttpd1418/lib/mod_stats.so
b7e0c000-b7e0d000 rw-p 00034000 08:08 163119 /serv/lighttpd1418/lib/mod_stats.so
b7e0d000-b7e0e000 rw-p b7e0d000 00:00 0
b7e0e000-b7f34000 r-xp 00000000 08:08 2210 /lib/libc-2.5.so
b7f34000-b7f35000 r–p 00125000 08:08 2210 /lib/libc-2.5.so
b7f35000-b7f37000 rw-p 00126000 08:08 2210 /lib/libc-2.5.so
b7f37000-b7f3a000 rw-p b7f37000 00:00 0
b7f3a000-b7f3c000 r-xp 00000000 08:08 2229 /lib/libdl-2.5.so
b7f3c000-b7f3e000 rw-p 00001000 08:08 2229 /lib/libdl-2.5.so
b7f3f000-b7f45000 r-xp 00000000 08:08 2286 /lib/librt-2.5.so
b7f45000-b7f47000 rw-p 00006000 08:08 2286 /lib/librt-2.5.so
b7f47000-b7f4b000 r-xp 00000000 08:08 7646 /usr/lib/libgthread-2.0.so.0.1200.11
b7f4b000-b7f4c000 rw-p 00003000 08:08 7646 /usr/lib/libgthread-2.0.so.0.1200.11
b7f4c000-b7f4d000 r-xp 00000000 08:08 163098 /serv/lighttpd1418/lib/mod_rewrite.so
b7f4d000-b7f4e000 rw-p 00000000 08:08 163098 /serv/lighttpd1418/lib/mod_rewrite.so
b7f4e000-b7f4f000 r-xp 00000000 08:08 163084 /serv/lighttpd1418/lib/mod_access.so
b7f4f000-b7f50000 rw-p 00000000 08:08 163084 /serv/lighttpd1418/lib/mod_access.so
b7f50000-b7f51000 r-xp 00000000 08:08 123783 /serv/lighttpd1418/lib/mod_indexfile.so
b7f51000-b7f52000 rw-p 00001000 08:08 123783 /s忽略 (core dumped)

/////////////////////////////////////////////////////////////////////////////////////////////////////////////

*** glibc detected *** /serv/lighttpd1418/sbin/lighttpd: malloc(): memory corruption (fast): 0×080a6c58 ***

======= Backtrace: =========

/lib/libc.so.6[0xb7ed5312]

/lib/libc.so.6[0xb7ed7637]

/lib/libc.so.6(__libc_malloc+0×85)[0xb7ed8d35]

/serv/lighttpd1418//lib/mod_stats.so(counter_incr+0×99)[0xb7e3d2b9]

/serv/lighttpd1418//lib/mod_stats.so(counter_incr_matchtable+0×57)[0xb7e3d347]

/serv/lighttpd1418//lib/mod_stats.so(counter_process_browsers+0×53)[0xb7e3d3c3]

/serv/lighttpd1418//lib/mod_stats.so[0xb7e3db65]

/serv/lighttpd1418/sbin/lighttpd(plugins_call_handle_uri_clean+0×5a)[0×805fe2a]

/serv/lighttpd1418/sbin/lighttpd(http_response_prepare+0×2ff)[0×804fdaf]

/serv/lighttpd1418/sbin/lighttpd(connection_state_machine+0×2f1)[0×8052b11]

/serv/lighttpd1418/sbin/lighttpd(main+0×10a0)[0×804e760]

/lib/libc.so.6(__libc_start_main+0xdc)[0xb7e86ebc]

/serv/lighttpd1418/sbin/lighttpd[0×804d331]

在网上没找到一点关于这个问题的解释。


原文: http://qtchina.tk/?q=node/148

Powered by zexport