Opened 16 years ago

Closed 15 years ago

#200 closed bug (WorksForMe)

malloc(): memory corruption when importing blocklist

Reported by: lordzos@… Owned by: andar
Priority: minor Milestone:
Component: Plugin Version: 0.5.9.0
Keywords: blocklist malloc memory corruption Cc:

Description

I use the Blocklist plugin to import (GZMuleReader) a blocklist file stored locally. The file is ipfilter.dat.gz, downloaded from http://www.bluetack.co.uk/.

Deluge, upon startup, imports this data from the file. Intermittently, it goes through importing the whole list (currently around 200,000 entries) and then crashes. Sometimes it works perfectly though, importing the whole list and everything's good.

Now, if I click on the 'Cancel' button during the import process - sometimes, again, it still crashes, but more usually it stops the import process and is ready to go. If I then go to the 'Edit' -> 'Plugins' dialog, select 'BlockList? Importer', click 'Preferences' and select 'OK' - thus getting it to import the list - most of the time this process seems to work without crashing, resulting in me having the full blocklist.

If I disable the BlockList? plugin altogether, deluge starts up perfectly every time.

My system is running Gentoo x64, with kernel 'Linux myhost 2.6.24-hardened-r1 #1 SMP Fri May 2 16:47:35 MDT 2008 x86_64 Intel(R) Core(TM)2 CPU 6700 @ 2.66GHz GenuineIntel? GNU/Linux'. I have 2GB of memory, which checks out as good. I am running the 'hardened' kernel image - which means, essentially, it's running with GRSecurity and PaX. However, I've tried running deluge with a non-hardened kernel image as well, with similar results to this bug report. I use python 2.5.2. I use the standard deluge Gentoo package, compiled with libnotify support. I'm using glibc 2.7.

Below is what is seen from the command-line when it starts up, loads in the blocklist file, imports it all and then crashes.

$ deluge
no existing Deluge session
Starting new Deluge session...
deluge_core; using libtorrent 0.13.0.0. Compiled with NDEBUG.
Applying preferences
save uploaded memory
Pickling state...
Scanning plugin dir /usr/share/deluge/plugins
Initialising plugin TorrentFiles?
Initialising plugin TorrentNotification?
Initialising plugin WebUi?
Initialising plugin Scheduler
Initialising plugin WebSeed?
Initialising plugin Search
Initialising plugin EventLogging?
Initialising plugin TorrentCreator?
Initialising plugin FlexRSS
Initialising plugin BlocklistImport?
Initialising plugin NetworkHealth?
Initialising plugin SpeedLimiter?
Initialising plugin DesiredRatio?
Initialising plugin TorrentPeers?
Initialising plugin NetworkGraph?
Initialising plugin MoveTorrent?
Applying preferences
Starting DHT...
Showing window
Found NetworkHealth? plugin...
Found TorrentFiles? plugin...
Found NetworkGraph? plugin...
Found TorrentPeers? plugin...
Found blocklist plugin ...
New Blocklist required...
Fetching <DIR>/ipfilter.dat.gz
importing with gzmule
GZMuleReader loading $HOME/.config/deluge/blocklist.cache
MuleReader? loading
TextBase? loading
Starting import
Import finished
* glibc detected * /usr/bin/python: malloc(): memory corruption: 0x00000000035eda90 *
======= Backtrace: =========
/lib/libc.so.6[0x2d75617cfb9d]
/lib/libc.so.6[0x2d75617d1e36]
/lib/libc.so.6(libc_malloc+0x90)[0x2d75617d34a0]
/usr/lib/libglib-2.0.so.0(g_malloc+0x1c)[0x2d75637319f7]
/usr/lib/libglib-2.0.so.0[0x2d756372d347]
/usr/lib/libglib-2.0.so.0(g_main_loop_run+0x192)[0x2d756372d91b]
/usr/lib/libgtk-x11-2.0.so.0(gtk_main+0xa3)[0x2d7563f74b09]
/usr/lib64/python2.5/site-packages/gtk-2.0/gtk/_gtk.so[0x2d7563b42e00]
/usr/lib/libpython2.5.so.1.0(PyEval_EvalFrameEx+0x4c65)[0x2d7560c16db6]
/usr/lib/libpython2.5.so.1.0(PyEval_EvalCodeEx+0x829)[0x2d7560c1790b]
/usr/lib/libpython2.5.so.1.0(PyEval_EvalFrameEx+0x3674)[0x2d7560c157c5]
/usr/lib/libpython2.5.so.1.0(PyEval_EvalFrameEx+0x49ed)[0x2d7560c16b3e]
/usr/lib/libpython2.5.so.1.0(PyEval_EvalCodeEx+0x829)[0x2d7560c1790b]
/usr/lib/libpython2.5.so.1.0(PyEval_EvalCode+0x32)[0x2d7560c179bd]
/usr/lib/libpython2.5.so.1.0[0x2d7560c2f4f1]
/usr/lib/libpython2.5.so.1.0(PyRun_FileExFlags+0x7a)[0x2d7560c2f5a1]
/usr/lib/libpython2.5.so.1.0(PyRun_SimpleFileExFlags+0x195)[0x2d7560c308de]
/usr/lib/libpython2.5.so.1.0(Py_Main+0x9f8)[0x2d7560c38d70]
/lib/libc.so.6(
libc_start_main+0xf4)[0x2d756177e1f4]
/usr/bin/python[0x4006e9]
======= Memory map: ========
00400000-00401000 r-xp 00000000 08:13 917284 /usr/bin/python2.5
00600000-00601000 r--p 00000000 08:13 917284 /usr/bin/python2.5
00601000-00602000 rw-p 00001000 08:13 917284 /usr/bin/python2.5
00602000-035f2000 rw-p 00602000 00:00 0 [heap]
40002000-40004000 rw-p 00000000 00:0d 1146 /dev/zero
40004000-40005000 ---p 40004000 00:00 0
40005000-40805000 rw-p 40005000 00:00 0
40805000-40806000 ---p 40805000 00:00 0
40806000-41006000 rw-p 40806000 00:00 0
41006000-41007000 ---p 41006000 00:00 0
41007000-41807000 rw-p 41007000 00:00 0
41807000-41808000 ---p 41807000 00:00 0
41808000-42008000 rw-p 41808000 00:00 0
2d756092f000-2d756094a000 r-xp 00000000 08:13 897494 /lib64/ld-2.7.so
2d756094a000-2d75609cf000 rw-p 2d756094a000 00:00 0
2d75609d0000-2d75609d7000 r--s 00000000 08:13 1352254 /usr/lib64/gconv/gconv-modules.cache
2d75609d7000-2d7560a08000 r--s 00000000 08:13 429313 /var/cache/fontconfig/df311e82a1a24c41a75c2c930223552e-x86-64.cache-2
2d7560a08000-2d7560a39000 r--s 00000000 08:13 429314 /var/cache/fontconfig/17090aa38d5c6f09fb8c5c354938f1d7-x86-64.cache-2
2d7560a39000-2d7560a3d000 r--s 00000000 08:13 429315 /var/cache/fontconfig/d62e99ef547d1d24cdb1bd22ec1a2976-x86-64.cache-2
2d7560a3d000-2d7560a56000 r--s 00000000 08:13 429316 /var/cache/fontconfig/4b5cf4386f1cde02a336ba961b4ac82d-x86-64.cache-2
2d7560a56000-2d7560a69000 r--s 00000000 08:13 429320 /var/cache/fontconfig/8d4af663993b81a124ee82e610bb31f9-x86-64.cache-2
2d7560a69000-2d7560a6c000 r--s 00000000 08:13 429309 /var/cache/fontconfig/76fa4b957c916922374347f144bde9da-x86-64.cache-2
2d7560a6c000-2d7560a74000 r--s 00000000 08:13 429317 /var/cache/fontconfig/87f5e051180a7a75f16eb6fe7dbd3749-x86-64.cache-2
2d7560b49000-2d7560b4a000 r--p 0001a000 08:13 897494 /lib64/ld-2.7.so
2d7560b4a000-2d7560b4b000 rw-p 0001b000 08:13 897494 /lib64/ld-2.7.so
2d7560b4b000-2d7560b4c000 rw-p 2d7560b4b000 00:00 0
2d7560b6d000-2d7560b6e000 rw-p 2d7560b6d000 00:00 0
2d7560b6e000-2d7560c82000 r-xp 00000000 08:13 917281 /usr/lib64/libpython2.5.so.1.0
2d7560c82000-2d7560e82000 ---p 00114000 08:13 917281 /usr/lib64/libpython2.5.so.1.0
2d7560e82000-2d7560e83000 r--p 00114000 08:13 917281 /usr/lib64/libpython2.5.so.1.0
2d7560e83000-2d7560eb6000 rw-p 00115000 08:13 917281 /usr/lib64/libpython2.5.so.1.0
2d7560eb6000-2d7560ebe000 rw-p 2d7560eb6000 00:00 0
2d7560ebe000-2d7560ed4000 r-xp 00000000 08:13 897014 /lib64/libpthread-2.7.so
2d7560ed4000-2d75610d3000 ---p 00016000 08:13 897014 /lib64/libpthread-2.7.so
2d75610d3000-2d75610d4000 r--p 00015000 08:13 897014 /lib64/libpthread-2.7.so
2d75610d4000-2d75610d5000 rw-p 00016000 08:13 897014 /lib64/libpthread-2.7.so
2d75610d5000-2d75610d9000 rw-p 2d75610d5000 00:00 0
2d75610d9000-2d75610db000 r-xp 00000000 08:13 897509 /lib64/libdl-2.7.so
2d75610db000-2d75612db000 ---p 00002000 08:13 897509 /lib64/libdl-2.7.so
2d75612db000-2d75612dc000 r--p 00002000 08:13 897509 /lib64/libdl-2.7.so
2d75612dc000-2d75612dd000 rw-p 00003000 08:13 897509 /lib64/libdl-2.7.so
2d75612dd000-2d75612de000 rw-p 2d75612dd000 00:00 0
2d75612de000-2d75612e0000 r-xp 00000000 08:13 897525 /lib64/libutil-2.7.so
2d75612e0000-2d75614df000 ---p 00002000 08:13 897525 /lib64/libutil-2.7.so
2d75614df000-2d75614e0000 r--p 00001000 08:13 897525 /lib64/libutil-2.7.so
2d75614e0000-2d75614e1000 rw-p 00002000 08:13 897525 /lib64/libutil-2.7.so
2d75614e1000-2d756155f000 r-xp 00000000 08:13 897046 /lib64/libm-2.7.so
2d756155f000-2d756175e000 ---p 0007e000 08:13 897046 /lib64/libm-2.7.so
2d756175e000-2d756175f000 r--p 0007d000 08:13 897046 /lib64/libm-2.7.so
2d756175f000-2d7561760000 rw-p 0007e000 08:13 897046 /lib64/libm-2.7.so
2d7561760000-2d756189e000 r-xp 00000000 08:13 896644 /lib64/libc-2.7.so
2d756189e000-2d7561a9e000 ---p 0013e000 08:13 896644 /lib64/libc-2.7.so
2d7561a9e000-2d7561aa2000 r--p 0013e000 08:13 896644 /lib64/libc-2.7.so
2d7561aa2000-2d7561aa3000 rw-p 00142000 08:13 896644 /lib64/libc-2.7.so
2d7561aa3000-2d7561b2c000 rw-p 2d7561aa3000 00:00 0
2d7561b5e000-2d7561b9f000 rw-p 2d7561b5e000 00:00 0
2d7561b9f000-2d7561ba4000 r-xp 00000000 08:13 961480 /usr/lib64/python2.5/lib-dynload/strop.so
2d7561ba4000-2d7561da3000 ---p 00005000 08:13 961480 /usr/lib64/python2.5/lib-dynload/strop.so
2d7561da3000-2d7561da4000 r--p 00004000 08:13 961480 /usr/lib64/python2.5/lib-dynload/strop.so
2d7561da4000-2d7561da6000 rw-p 00005000 08:13 961480 /usr/lib64/python2.5/lib-dynload/strop.so
2d7561da7000-2d7561de8000 rw-p 2d7561da7000 00:00 0
2d7561de8000-2d7561dec000 r-xp 00000000 08:13 961400 /usr/lib64/python2.5/lib-dynload/_locale.so
2d7561dec000-2d7561feb000 ---p 00004000 08:13 961400 /usr/lib64/python2.5/lib-dynload/_locale.so
2d7561feb000-2d7561fec000 r--p 00003000 08:13 961400 /usr/lib64/python2.5/lib-dynload/_locale.so
2d7561fec000-2d7561fed000 rw-p 00004000 08:13 961400 /usr/lib64/python2.5/lib-dynload/_locale.so
2d7561fed000-2d7561ff4000 r-xp 00000000 08:13 961443 /usr/lib64/python2.5/lib-dynload/operator.so
2d7561ff4000-2d75621f3000 ---p 00007000 08:13 961443 /usr/lib64/python2.5/lib-dynload/operator.so
2d75621f3000-2d75621f4000 r--p 00006000 08:13 961443 /usr/lib64/python2.5/lib-dynload/operator.so
2d75621f4000-2d75621f6000 rw-p 00007000 08:13 961443 /usr/lib64/python2.5/lib-dynload/operator.so
2d75621f6000-2d75621fc000 r-xp 00000000 08:13 961506 /usr/lib64/python2.5/lib-dynload/_struct.so
2d75621fc000-2d75623fb000 ---p 00006000 08:13 961506 /usr/lib64/python2.5/lib-dynload/_struct.so
2d75623fb000-2d75623fc000 r--p 00005000 08:13 961506 /usr/lib64/python2.5/lib-dynload/_struct.so
2d75623fc000-2d75623fe000 rw-p 00006000 08:13 961506 /usr/lib64/python2.5/lib-dynload/_struct.so
2d75623fe000-2d7562401000 r-xp 00000000 08:13 961271 /usr/lib64/python2.5/lib-dynload/time.so
2d7562401000-2d7562601000 ---p 00003000 08:13 961271 /usr/lib64/python2.5/lib-dynload/time.so
2d7562601000-2d7562602000 r--p 00003000 08:13 961271 /usr/lib64/python2.5/lib-dynload/timeAborted

Following is what is seen from the command-line when I interrupt the import process (by clicking 'Cancel') and then manually import the list using the technique mentioned earlier. This did not crash. I then shutdown the app. by selecting 'File' -> 'Quit'. All looks in good order from the trace below.

$ deluge
no existing Deluge session
Starting new Deluge session...
deluge_core; using libtorrent 0.13.0.0. Compiled with NDEBUG.
Applying preferences
save uploaded memory
Pickling state...
Scanning plugin dir /usr/share/deluge/plugins
Initialising plugin TorrentFiles?
Initialising plugin TorrentNotification?
Initialising plugin WebUi?
Initialising plugin Scheduler
Initialising plugin WebSeed?
Initialising plugin Search
Initialising plugin EventLogging?
Initialising plugin TorrentCreator?
Initialising plugin FlexRSS
Initialising plugin BlocklistImport?
Initialising plugin NetworkHealth?
Initialising plugin SpeedLimiter?
Initialising plugin DesiredRatio?
Initialising plugin TorrentPeers?
Initialising plugin NetworkGraph?
Initialising plugin MoveTorrent?
Applying preferences
Starting DHT...
Showing window
Found TorrentPeers? plugin...
Found TorrentFiles? plugin...
Found NetworkGraph? plugin...
Found NetworkHealth? plugin...
Found blocklist plugin ...
New Blocklist required...
Fetching <DIR>/ipfilter.dat.gz
importing with gzmule
GZMuleReader loading $HOME/.config/deluge/blocklist.cache
MuleReader? loading
TextBase? loading
Starting import
Cancelling
Import finished
New Blocklist required...
Fetching <DIR>/ipfilter.dat.gz
importing with gzmule
GZMuleReader loading $HOME/.config/deluge/blocklist.cache
MuleReader? loading
TextBase? loading
Starting import
Import finished
Applying preferences
save uploaded memory
Pickling state...
Stopping DHT...
Saving fastresume data...
Quitting the core...
core: removing torrents...
core: removing settings...
core: shutting down session...
core shut down.

I suppose I'm filing this as a bug because it is inconsistent. If it were always failing then I'd be thinking it was my system setup that was at fault. But this is not the case. Sometimes it works first time importing from startup. Othertimes I need to cancel and manually perform the import step for it to work. Other times it just won't work at all, for several startups ... then, seemingly magically, I'll try again and it works fine.

Change History (2)

comment:1 Changed 15 years ago by mvoncken

Worksforme in 1.0 : Closing old bugs, feel free to reopen.

comment:2 Changed 15 years ago by mvoncken

  • Resolution set to worksforme
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.