Not logged in. · Lost password · Register
Forum: Community Help and General Chat RSS
Emoticons crashing Psi

Announcement

11-16-2005, 12:33 by halr9000
Subject: Psi Groupchat (new address)
Join us at the Psi Groupchat (MUC)! Room name: psi@conference.psi-im.org
Page:  1  2  next 
muffinman #1
Member for a month · 7 posts
Group memberships: Members
Show profile · Link to this post
Subject: Emoticons crashing Psi
Hey all,

I work in IT at a 3d animation studio and we use Psi for our jabber client. We are updating everyone to 0.11 soon and we decided it would be nice to have a new emoticon set. I built a pretty good size database of them, about 400 files strong. Everything works great, except Psi crashes when trying to select the iconset file in the options dialog. If you only make one change at a time, it work and allows the emoticons to be used, so I know they are working correctly. I looked around on the forums and everything I've seen says that the newer version (0.11) shouldn't have this problem because it uses QT4 (as apposed to 3). Is there something I'm missing here?

Any help is appreciated.

Thanks,
JD
Avatar
michalj (Moderator) #2
Member since 04/2004 · 2174 posts · Location: Legionowo, Poland
Group memberships: Global Moderators, Members
Show profile · Link to this post
Are you 100% sure that you are using Psi-0.11 instead of Psi-0.10 when you experience crashes? Please double check Psi|Help|About Psi... to see what Psi version are you running.
Michał Jazłowiecki (michalj)
Psi Forum & Wiki Moderator :: Psi-Daisy Author
muffinman #3
Member for a month · 7 posts
Group memberships: Members
Show profile · Link to this post
Quote by michalj:
Are you 100% sure that you are using Psi-0.11 instead of Psi-0.10 when you experience crashes? Please double check Psi|Help|About Psi... to see what Psi version are you running.

Yes, I am absolutely positive. I have tried reinstalling and such as well. I've also tried the emoticons on about 5-10 other boxes here... some of them crash, some of them don't. They are all the exact same configuration.

Thank you
muffinman #4
Member for a month · 7 posts
Group memberships: Members
Show profile · Link to this post
bump
Avatar
machekku #5
User title: Crazy guy from Poland
Member since 07/2004 · 781 posts · Location: Poland
Group memberships: Developers, Members
Show profile · Link to this post
Could you provide a backtrace or something like this?
Maciek "Machekku" Niedzielski
Psi developer
[Image: http://machekku.uaznia.net/jabber/jobble/map/jmpixel1.png]
muffinman #6
Member for a month · 7 posts
Group memberships: Members
Show profile · Link to this post
Could you be more specific? You mean like a back track of what I've done?

I could also put the files online if you'd like to work with them.

Thanks for the help
Avatar
machekku #7
User title: Crazy guy from Poland
Member since 07/2004 · 781 posts · Location: Poland
Group memberships: Developers, Members
Show profile · Link to this post
What OS are you using?
Maciek "Machekku" Niedzielski
Psi developer
[Image: http://machekku.uaznia.net/jabber/jobble/map/jmpixel1.png]
debianuser #8
Member since 01/2007 · 38 posts
Group memberships: Members
Show profile · Link to this post
Quote by muffinman on 05-01-2008, 13:46:
[...] I could also put the files online if you'd like to work with them. [...]
Yes, could you provide a link?
muffinman #9
Member for a month · 7 posts
Group memberships: Members
Show profile · Link to this post
OS is Windows XP x64 service pack 1 & 2 (depending on which box)

Link to the file is here:
http://www.mediafire.com/?yxmisxt3mmf

Thanks for all the help.
debianuser #10
Member since 01/2007 · 38 posts
Group memberships: Members
Show profile · Link to this post
Quote by muffinman on 04-24-2008, 16:20:
[...] Psi crashes when trying to select the iconset file in the options dialog. If you only make one change at a time [...]
I downloaded the package and put it in the "emoticons" and "roster" folder. When I click on it in the roster icon dialog ( I know it is for emoticons) then I could crash Psi once. Now I cannot reproduce it anymore.
When I click on it in the emoticons dialog it works everytime. It also works as you said correctly in the chat window.

What do you mean with "making more changes at a time" in order to crash Psi?

I think it is because the iconset is really fat, it takes 10 secounds here to load the package (CPU=100%).
In strace this here is all the time repeated, some numbers change from time to time and it lasts much longer (I had to abort it)

[...]
_llseek(21, 700416, [700416], SEEK_SET) = 0
_llseek(21, 700416, [700416], SEEK_SET) = 0
_llseek(21, 700416, [700416], SEEK_SET) = 0
read(21, "}375\274\202\257\261\250\5\330\10\25"..., 4096) = 4096
_llseek(21, 696320, [696320], SEEK_SET) = 0
read(21, "46\261\313\263\204lw\347\22\332\225\336\275&\234I\270\357"..., 4096) = 4096
read(21, "}375\274\202\257\261\250\5\330\10\25"..., 4096) = 4096
_llseek(21, 704512, [704512], SEEK_SET) = 0
_llseek(21, 704512, [704512], SEEK_SET) = 0
[...]

Maybe the code to analyse the package and read it in into Psi is not very effective or my machine is slow....

My System:
Debian SID (QT 4.4 RC)
Psi SVN snapshot (0.12) a few days old
muffinman #11
Member for a month · 7 posts
Group memberships: Members
Show profile · Link to this post
Quote by debianuser:
What do you mean with "making more changes at a time" in order to crash Psi?


What I mean is, un-highlight one iconset and highlight another, then press apply. If you change one at a time it usually goes fine, but more than one it hangs/crashes.
I agree that speed of the computer seems to play a roll in all this.
Thanks again
debianuser #12
Member since 01/2007 · 38 posts
Group memberships: Members
Show profile · Link to this post
Here a backtrace or something like this :).
I ran "strace ./psi" and the last lines are:

[...]
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
_llseek(23, 720896, [720896], SEEK_SET) = 0
read(23, "\35 N\214\10BlurEmoticon"..., 4096) = 4096
_llseek(23, 716800, [716800], SEEK_SET) = 0
read(23, "\255\25\366\32\36 Z\333"..., 4096) = 4096
read(23, "\35 N\214\10BlurEmoticon"..., 4096) = 4096
_llseek(23, 724992, [724992], SEEK_SET) = 0
_llseek(23, 724992, [724992], SEEK_SET) = 0
_llseek(23, 724992, [724992], SEEK_SET) = 0
_llseek(23, 724992, [724992], SEEK_SET) = 0
_llseek(23, 724992, [724992], SEEK_SET) = 0
_llseek(23, 569344, [569344], SEEK_SET) = 0
read(23, "vm-qk\212\262X\300\5\200\317v9\354\23!\3423\200\2wc\264"..., 4096) = 4096
_llseek(23, 573440, [573440], SEEK_SET) = 0
read(23, "\207\240R\336\222z\36\354323\304\266K\244\325\n\243"..., 8192) = 8192
read(23, "sl\332\353\304\204\261\337\343?G\371\245\374\303Pg3\334"..., 4096) = 4096
close(23)                               = 0
munmap(0x49ade000, 4096)                = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Process 3074 detached

With the command "gdb ./psi" the last lines were:

GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
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 "powerpc-linux-gnu"...
(gdb) run
Starting program: /home/yul/opt/Psi_0.12Debug/bin/psi
[Thread debugging using libthread_db enabled]
[New Thread 0x48029200 (LWP 3098)]
[New Thread 0x48a6d470 (LWP 3101)]
[New Thread 0x4926d470 (LWP 3102)]
qca-gnupg: disabling keyring monitoring in Qt version < 4.3.5
[New Thread 0x49add470 (LWP 3108)]
[Thread 0x49add470 (LWP 3108) exited]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x48029200 (LWP 3098)]
0x0db3cd90 in ?? () from /usr/lib/qt4/plugins/imageformats/libqgif.so
(gdb) backtrace
#0  0x0db3cd90 in ?? () from /usr/lib/qt4/plugins/imageformats/libqgif.so
#1  0x0db3d4c8 in ?? () from /usr/lib/qt4/plugins/imageformats/libqgif.so
#2  0x0ee43714 in QImageReader::read () from /usr/lib/libQtGui.so.4
#3  0x0ee43d9c in QImageReader::read () from /usr/lib/libQtGui.so.4
#4  0x1009b7b0 in Private (this=0x117926f0, ba=0xbfd04f54)
    at tools/iconset/anim.cpp:119
#5  0x10099e20 in Anim (this=0x1162dd28, data=@0xbfd04f54)
    at tools/iconset/anim.cpp:236
#6  0x1008c088 in PsiIcon::loadFromData (this=0xbfd04f08, ba=@0xbfd04f54,
    isAnim=true) at tools/iconset/iconset.cpp:674
#7  0x100979d4 in Iconset::Private::loadIcon (this=0x10c833f8, i=@0xbfd050bc,
    dir=@0xbfd0510c) at tools/iconset/iconset.cpp:1195
#8  0x10098d80 in Iconset::Private::load (this=0x10c833f8, doc=@0xbfd0511c,
    dir=
      {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 32543}, alloc = 0, size = 0, data = 0x107f8bf2, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 1577}, alloc = 0, size = 0, data = 0xeacc332, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0xbfd0510c, static codecForCStrings = 0x0})
    at tools/iconset/iconset.cpp:1282
#9  0x1008d718 in Iconset::load (this=0x10879650, dir=@0xbfd05174)
    at tools/iconset/iconset.cpp:1425
---Type <return> to continue, or q <return> to quit---
#10 0x102b5c40 in PsiIconset::Private::emoticons (this=0x1087edc8)
    at psiiconset.cpp:245
#11 0x102afe68 in PsiIconset::loadEmoticons (this=0x10881c38)
    at psiiconset.cpp:344
#12 0x102aff94 in PsiIconset::optionChanged (this=0x10881c38,
    option=@0xbfd05428) at psiiconset.cpp:366
#13 0x1052ff3c in PsiIconset::qt_metacall (this=0x10881c38,
    _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0xbfd05378)
    at .moc/moc_psiiconset.cpp:70
#14 0x0e9c4740 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#15 0x0e9c568c in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#16 0x1051b01c in OptionsTree::optionChanged (this=0x1083a260, _t1=@0xbfd05428)
    at .moc/moc_optionstree.cpp:88
#17 0x100a1428 in OptionsTree::setOption (this=0x1083a260, name=@0xbfd05428,
    value=@0xbfd05418) at tools/optionstree/optionstree.cpp:84
#18 0x104e0dac in OptionsTabIconsetEmoticons::applyOptions (this=0x10acf920)
    at options/opt_iconset.cpp:575
#19 0x104ac304 in MetaOptionsTab::applyOptions (this=0x10acf718)
    at options/optionstab.cpp:256
#20 0x104afe44 in OptionsDlg::Private::doApply (this=0x1085cc68)
    at options/optionsdlg.cpp:530
#21 0x104aff38 in OptionsDlg::doApply (this=0x109b5620)
    at options/optionsdlg.cpp:580
---Type <return> to continue, or q <return> to quit---

I am no expert so I cannot do anything with this, but maybe a developer can look into this. :)
Avatar
infiniti (Administrator) #13
Member since 09/2002 · 1378 posts · Location: California, USA
Group memberships: Administrators, Developers, Members
Show profile · Link to this post
It looks like maybe Qt is crashing while reading a certaing GIF image.  debianuser, do you have a development environment up such that you can change Psi?  If you could print to the console which image file is currently being read, then we can know what image is being processed at the time of crash.  If it's the same image every time, maybe we can track this down.

Also, it might help to use Qt with debug symbols, then we'd know where in Qt it is failing.
-Justin
debianuser #14
Member since 01/2007 · 38 posts
Group memberships: Members
Show profile · Link to this post
Hello,
I installed debug packages for qt and can still reproduce the problem, here is a backtrace again:

$ gdb ./psi
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
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 "powerpc-linux-gnu"...
(gdb) run
Starting program: /home/yul/opt/Psi_0.12Debug/bin/psi
[Thread debugging using libthread_db enabled]
[New Thread 0x48029200 (LWP 4268)]
[New Thread 0x48a6d470 (LWP 4271)]
[New Thread 0x4926d470 (LWP 4272)]
qca-gnupg: disabling keyring monitoring in Qt version < 4.3.5
[New Thread 0x49add470 (LWP 4278)]
[Thread 0x49add470 (LWP 4278) exited]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x48029200 (LWP 4268)]
QGIFFormat::decode (this=0x110ff578, image=0x113673c4, buffer=0x110e88d4 "�\210\207Y�=��A", length=12, nextFrameDelay=0x113673d0, loopCount=0x113673d4, nextSize=0x113673dc)
    at qgifhandler.cpp:522
522    qgifhandler.cpp: No such file or directory.
    in qgifhandler.cpp
(gdb) bt
#0  QGIFFormat::decode (this=0x110ff578, image=0x113673c4, buffer=0x110e88d4 "�\210\207Y�=��A", length=12, nextFrameDelay=0x113673d0, loopCount=0x113673d4, nextSize=0x113673dc)
    at qgifhandler.cpp:522
#1  0x0db3d4c8 in QGifHandler::read (this=0x113673b0, image=0xbfdcdca8) at qgifhandler.cpp:824
#2  0x0ee43714 in QImageReader::read (this=0xbfdcdd04, image=0xbfdcdca8) at image/qimagereader.cpp:990
#3  0x0ee43d9c in QImageReader::read (this=0xbfdcdd04) at image/qimagereader.cpp:940
#4  0x1009b77c in Private (this=0x112134f8, ba=0xbfdcdf74) at tools/iconset/anim.cpp:119
#5  0x10099dec in Anim (this=0x114b8108, data=@0xbfdcdf74) at tools/iconset/anim.cpp:236
#6  0x1008c054 in PsiIcon::loadFromData (this=0xbfdcdf28, ba=@0xbfdcdf74, isAnim=true) at tools/iconset/iconset.cpp:674
#7  0x100979a0 in Iconset::Private::loadIcon (this=0x11a66fa8, i=@0xbfdce0dc, dir=@0xbfdce12c) at tools/iconset/iconset.cpp:1195
#8  0x10098d4c in Iconset::Private::load (this=0x11a66fa8, doc=@0xbfdce13c, dir=
      {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 32544}, alloc = 0, size = 0, data = 0x107f9bfa, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 1577}, alloc = 0, size = 0, data = 0xeacc332, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0xbfdce12c, static codecForCStrings = 0x0}) at tools/iconset/iconset.cpp:1282
#9  0x1008d6e4 in Iconset::load (this=0x10886a08, dir=@0xbfdce194) at tools/iconset/iconset.cpp:1425
#10 0x102b5bd4 in PsiIconset::Private::emoticons (this=0x108729d0) at psiiconset.cpp:245
#11 0x102afdfc in PsiIconset::loadEmoticons (this=0x10881e50) at psiiconset.cpp:344
#12 0x102aff28 in PsiIconset::optionChanged (this=0x10881e50, option=@0xbfdce448) at psiiconset.cpp:366
#13 0x10530a98 in PsiIconset::qt_metacall (this=0x10881e50, _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0xbfdce398) at .moc/moc_psiiconset.cpp:70
#14 0x0e9c4740 in QMetaObject::activate (sender=0x1083a0a0, from_signal_index=4, to_signal_index=4, argv=<value optimized out>) at kernel/qobject.cpp:3010
#15 0x0e9c568c in QMetaObject::activate (sender=0x1083a0a0, m=<value optimized out>, local_signal_index=0, argv=0xbfdce398) at kernel/qobject.cpp:3080
#16 0x1051bb78 in OptionsTree::optionChanged (this=0x1083a0a0, _t1=@0xbfdce448) at .moc/moc_optionstree.cpp:88
#17 0x100a13f4 in OptionsTree::setOption (this=0x1083a0a0, name=@0xbfdce448, value=@0xbfdce438) at tools/optionstree/optionstree.cpp:84
#18 0x104e1908 in OptionsTabIconsetEmoticons::applyOptions (this=0x10ac36d8) at options/opt_iconset.cpp:575
#19 0x104ace60 in MetaOptionsTab::applyOptions (this=0x10ac3480) at options/optionstab.cpp:256
#20 0x104b09a0 in OptionsDlg::Private::doApply (this=0x1083a438) at options/optionsdlg.cpp:530
#21 0x104b0a94 in OptionsDlg::doApply (this=0x10aa8058) at options/optionsdlg.cpp:580
#22 0x10542918 in OptionsDlg::qt_metacall (this=0x10aa8058, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbfdce628) at .moc/moc_optionsdlg.cpp:74
#23 0x0e9c4740 in QMetaObject::activate (sender=0x10a0dc58, from_signal_index=29, to_signal_index=30, argv=<value optimized out>) at kernel/qobject.cpp:3010
#24 0x0e9c4be4 in QMetaObject::activate (sender=0x10a0dc58, m=<value optimized out>, from_local_signal_index=2, to_local_signal_index=3, argv=0xbfdce628)
    at kernel/qobject.cpp:3100
#25 0x0f3cd098 in QAbstractButton::clicked (this=<value optimized out>, _t1=false) at .moc/release-shared/moc_qabstractbutton.cpp:185
#26 0x0f0d4818 in QAbstractButtonPrivate::emitClicked (this=0x10ac1270) at widgets/qabstractbutton.cpp:543
#27 0x0f0d69ec in QAbstractButtonPrivate::click (this=0x10ac1270) at widgets/qabstractbutton.cpp:536
#28 0x0f0d6da0 in QAbstractButton::mouseReleaseEvent (this=0x10a0dc58, e=0xbfdceb2c) at widgets/qabstractbutton.cpp:1112
#29 0x0edddfc0 in QWidget::event (this=<value optimized out>, event=0xbfdceb2c) at kernel/qwidget.cpp:6920
#30 0x0f0d467c in QAbstractButton::event (this=<value optimized out>, e=<value optimized out>) at widgets/qabstractbutton.cpp:1074
#31 0x0f18ceb8 in QPushButton::event (this=0x10a0dc58, e=0xbfdceb2c) at widgets/qpushbutton.cpp:658
#32 0x0ed74b88 in QApplicationPrivate::notify_helper (this=0x108017d8, receiver=0x10a0dc58, e=0xbfdceb2c) at kernel/qapplication.cpp:3766
#33 0x0ed7e714 in QApplication::notify (this=<value optimized out>, receiver=0x10a0dc58, e=0xbfdceb2c) at kernel/qapplication.cpp:3495
#34 0x103cfb18 in PsiApplication::notify (this=0xbfdcf338, receiver=0x10a0dc58, event=0xbfdceb2c) at psiapplication.cpp:250
#35 0x0e9aa4cc in QCoreApplication::notifyInternal (this=0xbfdcf338, receiver=0x10a0dc58, event=<value optimized out>) at kernel/qcoreapplication.cpp:587
#36 0x0ed7d164 in QApplicationPrivate::sendMouseEvent (receiver=0x10a0dc58, event=0xbfdceb2c, alienWidget=0x10a0dc58, nativeWidget=0x10aa8058, buttonDown=<value optimized out>,
    lastMouseReceiver=@0xf64d528) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:218
#37 0x0edf6914 in QETWidget::translateMouseEvent (this=0x10aa8058, event=<value optimized out>) at kernel/qapplication_x11.cpp:4122
#38 0x0edf5824 in QApplication::x11ProcessEvent (this=0xbfdcf338, event=0xbfdceefc) at kernel/qapplication_x11.cpp:3244
#39 0x0ee206b0 in x11EventSourceDispatch (s=0x10804918, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:148
#40 0x0e1f379c in IA__g_main_context_dispatch (context=0x10803e90) at /build/buildd/glib2.0-2.16.3/glib/gmain.c:2009
#41 0x0e1f7f38 in g_main_context_iterate (context=0x10803e90, block=1, dispatch=1, self=<value optimized out>) at /build/buildd/glib2.0-2.16.3/glib/gmain.c:2642
#42 0x0e1f81f8 in IA__g_main_context_iteration (context=0x10803e90, may_block=1) at /build/buildd/glib2.0-2.16.3/glib/gmain.c:2705
#43 0x0e9def14 in QEventDispatcherGlib::processEvents (this=0x10801d98, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:325
#44 0x0ee1fce0 in QGuiEventDispatcherGlib::processEvents (this=<value optimized out>, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:204
#45 0x0e9a80e8 in QEventLoop::processEvents (this=<value optimized out>, flags={i = -1076039032}) at kernel/qeventloop.cpp:149
#46 0x0e9a8368 in QEventLoop::exec (this=0xbfdcf2bc, flags={i = -1076038984}) at kernel/qeventloop.cpp:200
#47 0x0e9ab954 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:845
#48 0x0ed74910 in QApplication::exec () at kernel/qapplication.cpp:3298
#49 0x10514654 in main (argc=1, argv=0xbfdcf5f4) at main.cpp:356
(gdb)

Yes, I can change Psi. You only have to say me what I have to do. :)
Avatar
infiniti (Administrator) #15
Member since 09/2002 · 1378 posts · Location: California, USA
Group memberships: Administrators, Developers, Members
Show profile · Link to this post
And what exact version of Qt?  I see you mention something about 4.4 RC.  You might try with 4.4.0.

In psi/src/tools/iconset/iconset.cpp, near line 1009 there is a function called loadData.  Add this to the top of the function:

printf("loading: [%s]\n", qPrintable(fileName));

This should tell us when each image file is being processed, so we can see which one is causing the crash.
-Justin
This post was edited on 05-13-2008, 14:59 by infiniti.
Close Smaller – Larger + Reply to this post:
Smilies: :mellow: :huh: ^_^ :o ;) :P :D :lol: B) :rolleyes: -_- <_< :) :wub: :angry: :( :unsure: :wacko: :blink: :ph34r:
Special characters:
Page:  1  2  next 
Go to forum
Unclassified NewsBoard devel of 20051113 © 2003-5 by Yves Goergen
Current time: 05-17-2008, 12:21:04 (UTC -04:00)