Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
FFXII: GSdx and zzogl crash on FMV
#1
On the line of the tests I did, I find a crash on FMV of FFXII for both 1.2.2 and latest git.
On GSdx, going to software works, but if I use hardware mode I get an assertion fail on any FMV:
/****************************************************************************************************************/
/home/antoine/Source/pcsx2-git/common/src/Utilities/Linux/LnxHostSys.cpp(64) : assertion failed:
Function: void SysPageFaultSignalFilter(int, siginfo_t*, void*)
Thread: MTGS
Condition: false
Message: Unhandled page fault @ 0x00000000

Stacktrace:
[00] __kernel_rt_sigreturn
[01] 0x0xf18ee0e0
[02] 0x0xf18bc067
[03] 0x0xf18bd573
[04] 0x0xf18d5712
[05] 0x0xf18dc137
[06] 0x0xf18e67fa
[07] GSgifTransfer
/****************************************************************************************************************/
Nothing interesting on the terminal and gdb(at least for me)
It crashes both on my desktop(nvidia gt770) and laptop(intel hd4000). Don't know for windows as I don't possess it.

For zzogl, the crash message is on the terminal :
The program 'pcsx2' received an X Window System error.
This probably reflects a bug in the program.
The error was The program 'pcsx2' received an X Window System error.
This probably reflects a bug in the program.
The error was 'GLXBadFBConfig'.
(Details: serial 31 error_code 178 request_code 155 minor_code 34)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
Erreur de segmentation (core dumped)'GLXBadFBConfig'.
(Details: serial 31 error_code 178 request_code 155 minor_code 34)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
Erreur de segmentation (core dumped)

The backtrace being:
#0 0x0822020c in GSFrame:OhmynUpdateTitle(wxTimerEvent&) ()
#1 0x081dcb20 in Pcsx2App::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) ()
#2 0x081dcadd in Pcsx2App::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) const ()
#3 0xf7f20808 in wxEvtHandler:TonguerocessEventIfMatches(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from /usr/lib32/libwx_baseu-2.8.so.0
#4 0xf7f20be4 in wxEvtHandler:WackoearchDynamicEventTable(wxEvent&) () from /usr/lib32/libwx_baseu-2.8.so.0
#5 0xf7f20cbe in wxEvtHandler:TonguerocessEvent(wxEvent&) () from /usr/lib32/libwx_baseu-2.8.so.0
#6 0xf7ceed12 in wxTimerBase::Notify() () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#7 0xf7be912a in ?? () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#8 0xf6e14bb1 in ?? () from /usr/lib32/libglib-2.0.so.0
#9 0xf6e14097 in g_main_context_dispatch () from /usr/lib32/libglib-2.0.so.0
#10 0xf6e14458 in ?? () from /usr/lib32/libglib-2.0.so.0
#11 0xf6e14753 in g_main_loop_run () from /usr/lib32/libglib-2.0.so.0
#12 0xf73cba75 in gtk_main () from /usr/lib32/libgtk-x11-2.0.so.0
#13 0xf7bde9d3 in wxEventLoop::Run() () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#14 0xf7c6f584 in wxAppBase::MainLoop() () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#15 0xf7c6f0e0 in wxAppBase:OhmynRun() () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#16 0xf7ebe706 in wxEntry(int&, wchar_t**) () from /usr/lib32/libwx_baseu-2.8.so.0
#17 0xf7ebe7a3 in wxEntry(int&, char**) () from /usr/lib32/libwx_baseu-2.8.so.0
#18 0x081db87b in main ()

Hope it helps, but, I try to use the debugger to see what causes the bug on gsdx but it fails miserably before I get read anything meaningful. I guess it's related to something in the problem right... But not fully sure either.
Laptop: Arch Linux x86_64
CPU :Core i3-3217U @ 1.8Ghz
GPU: intel HD4000
4GO RAM DDR3-1600Mhz
Desktop: Arch Linux x86_64
CPU : Core i7 2600k @ 4.1Ghz
GPU : Nvidia GTX 770 OC Gigabyte
8GO Ram dual channel DDR3-1600 Mhz
Reply

Sponsored links

#2
are you sure that you're 32 bits driver is properly installed? Maybe latest commit break something.

Anyway, let's first concentrate on first crash. Did you check all thread on gdb backtrace? Normally you can have more information. It would be a good idea to install dbg package.
Reply
#3
I am sure that it is installed on both computers yes. Other games run on hardware and software, gameplay runs even with hardware, just the FMVs crash.

#0 0x08381406 in void x86Emitter::xWrite<unsigned short>(unsigned short) ()
#1 0x0837f429 in x86Emitter::xWrite16(unsigned short) ()
#2 0x0837c307 in x86Emitter:WackoimdPrefix(unsigned char, unsigned short) ()
#3 0x0837e8e7 in void x86Emitter::xOpWrite0F<x86Emitter::xRegisterSSE, x86Emitter::xIndirectVoid>(unsigned char, unsigned short, x86Emitter::xRegisterSSE const&, x86Emitter::xIndirectVoid const&) ()
#4 0x0837d720 in x86Emitter::xImplSimd_MoveSSE::operator()(x86Emitter::xRegisterSSE const&, x86Emitter::xIndirectVoid const&) const ()
#5 0x082bebe7 in VifUnpackSSE_Base::xUPK_S_32() const ()
#6 0x082bf960 in VifUnpackSSE_Base::xUnpack(int) const ()
#7 0x082bfd7f in nVifGen(int, int, int) ()
#8 0x082bff11 in VifUnpackSSE_Init() ()
#9 0x08079d38 in hwInit() ()
#10 0x08079d8b in hwReset() ()
#11 0x080ad7fd in cpuReset() ()
#12 0x08273ef8 in SysCoreThread:LaughoCpuReset() ()
#13 0x081cc29d in AppCoreThread:LaughoCpuReset() ()
#14 0x08273e74 in SysCoreThread::_reset_stuff_as_needed() ()
#15 0x0827404f in SysCoreThread:WackotateCheckInThread() ()
#16 0x081cc3f1 in AppCoreThread:WackotateCheckInThread() ()
#17 0x082740cb in SysCoreThread::ExecuteTaskInThread() ()
#18 0x081cc497 in AppCoreThread::ExecuteTaskInThread() ()
#19 0x0834d686 in Threading:Tongue2xThread::_try_virtual_invoke(void (Threading:Tongue2xThread::*)()) ()
#20 0x0834db3b in Threading:Tongue2xThread::_internal_execute() ()
#21 0x0834dc62 in Threading:Tongue2xThread::_internal_callback(void*) ()
#22 0xf7120096 in start_thread () from /usr/lib32/libpthread.so.0
#23 0xf7042a7e in clone () from /usr/lib32/libc.so.6

backtrace for current thread from gdb with latest git. But it's the same for latest stable, not just the git rev. (I did strange stuff before sorry). Need valgrind also?
Thread 7 (Thread 0xee13cb40 (LWP 2485)):
#0 0xf7fd7da0 in ?? ()
#1 0xf2740460 in ?? () from /usr/lib32/libasound.so.2
#2 0xf274f39d in ?? () from /usr/lib32/libasound.so.2
#3 0xf2739a80 in snd_pcm_writei () from /usr/lib32/libasound.so.2
#4 0xf6c599dd in ?? () from /usr/lib32/libSDL-1.2.so.0
#5 0xf6c2af82 in ?? () from /usr/lib32/libSDL-1.2.so.0
#6 0xf6c33b25 in ?? () from /usr/lib32/libSDL-1.2.so.0
#7 0xf6c7a748 in ?? () from /usr/lib32/libSDL-1.2.so.0
#8 0xf7120096 in start_thread () from /usr/lib32/libpthread.so.0
#9 0xf7042a7e in clone () from /usr/lib32/libc.so.6

Thread 6 (Thread 0xf09b3b40 (LWP 2484)):
#0 0xf7fd7da0 in ?? ()
#1 0x0809a1b5 in SysMtgsThread::ExecuteTaskInThread() ()
#2 0x0834d686 in Threading:Tongue2xThread::_try_virtual_invoke(void (Threading:Tongue2xThread::*)()) ()
#3 0x0834db3b in Threading:Tongue2xThread::_internal_execute() ()
#4 0x0834dc62 in Threading:Tongue2xThread::_internal_callback(void*) ()
#5 0xf7120096 in start_thread () from /usr/lib32/libpthread.so.0
#6 0xf7042a7e in clone () from /usr/lib32/libc.so.6

Thread 5 (Thread 0xf31ffb40 (LWP 2483)):
#0 0x08381406 in void x86Emitter::xWrite<unsigned short>(unsigned short) ()
#1 0x0837f429 in x86Emitter::xWrite16(unsigned short) ()
#2 0x0837c307 in x86Emitter:WackoimdPrefix(unsigned char, unsigned short) ()
#3 0x0837e8e7 in void x86Emitter::xOpWrite0F<x86Emitter::xRegisterSSE, x86Emitter::xIndirectVoid>(unsigned char, unsigned short, x86Emitter::xRegisterSSE const&, x86Emitter::xIndirectVoid const&) ()
#4 0x0837d720 in x86Emitter::xImplSimd_MoveSSE::operator()(x86Emitter::xRegisterSSE const&, x86Emitter::xIndirectVoid const&) const ()
#5 0x082bebe7 in VifUnpackSSE_Base::xUPK_S_32() const ()
#6 0x082bf960 in VifUnpackSSE_Base::xUnpack(int) const ()
#7 0x082bfd7f in nVifGen(int, int, int) ()
#8 0x082bff11 in VifUnpackSSE_Init() ()
#9 0x08079d38 in hwInit() ()
#10 0x08079d8b in hwReset() ()
#11 0x080ad7fd in cpuReset() ()
#12 0x08273ef8 in SysCoreThread:LaughoCpuReset() ()
#13 0x081cc29d in AppCoreThread:LaughoCpuReset() ()
#14 0x08273e74 in SysCoreThread::_reset_stuff_as_needed() ()
#15 0x0827404f in SysCoreThread:WackotateCheckInThread() ()
#16 0x081cc3f1 in AppCoreThread:WackotateCheckInThread() ()
#17 0x082740cb in SysCoreThread::ExecuteTaskInThread() ()
#18 0x081cc497 in AppCoreThread::ExecuteTaskInThread() ()
#19 0x0834d686 in Threading:Tongue2xThread::_try_virtual_invoke(void (Threading:Tongue2xThread::*)()) ()
#20 0x0834db3b in Threading:Tongue2xThread::_internal_execute() ()
#21 0x0834dc62 in Threading:Tongue2xThread::_internal_callback(void*) ()
---Type <return> to continue, or q <return> to quit---
#22 0xf7120096 in start_thread () from /usr/lib32/libpthread.so.0
#23 0xf7042a7e in clone () from /usr/lib32/libc.so.6

Thread 3 (Thread 0xf3b44b40 (LWP 2481)):
#0 0xf7fd7da0 in ?? ()
#1 0x0809bf9a in VU_Thread::ExecuteRingBuffer() ()
#2 0x0809bf71 in VU_Thread::ExecuteTaskInThread() ()
#3 0x0834d686 in Threading:Tongue2xThread::_try_virtual_invoke(void (Threading:Tongue2xThread::*)()) ()
#4 0x0834db3b in Threading:Tongue2xThread::_internal_execute() ()
#5 0x0834dc62 in Threading:Tongue2xThread::_internal_callback(void*) ()
#6 0xf7120096 in start_thread () from /usr/lib32/libpthread.so.0
#7 0xf7042a7e in clone () from /usr/lib32/libc.so.6

Thread 2 (Thread 0xf4686b40 (LWP 2479)):
#0 0xf7fd7da0 in ?? ()
#1 0x0821c50f in pxEvtQueue::Idle() ()
#2 0x0821cdaf in ExecutorThread::ExecuteTaskInThread() ()
#3 0x0834d686 in Threading:Tongue2xThread::_try_virtual_invoke(void (Threading:Tongue2xThread::*)()) ()
#4 0x0834db3b in Threading:Tongue2xThread::_internal_execute() ()
#5 0x0834dc62 in Threading:Tongue2xThread::_internal_callback(void*) ()
#6 0xf7120096 in start_thread () from /usr/lib32/libpthread.so.0
#7 0xf7042a7e in clone () from /usr/lib32/libc.so.6

Thread 1 (Thread 0xf645a940 (LWP 2472)):
#0 0xf7fd7da0 in ?? ()
Backtrace stopped: Cannot access memory at address 0x6

This, is the one with every threads.
Laptop: Arch Linux x86_64
CPU :Core i3-3217U @ 1.8Ghz
GPU: intel HD4000
4GO RAM DDR3-1600Mhz
Desktop: Arch Linux x86_64
CPU : Core i7 2600k @ 4.1Ghz
GPU : Nvidia GTX 770 OC Gigabyte
8GO Ram dual channel DDR3-1600 Mhz
Reply
#4
How did you generate latest trace? You don't have same info. You need to trigger the crash so you get a popup and then attach gdb on it.
Reply
#5
Current thread:
#0 0xf7fd7da0 in ?? ()
#1 0x083398e1 in pxOnAssert(DiagnosticOrigin const&, wchar_t const*) ()
#2 0x08341426 in SysPageFaultSignalFilter(int, siginfo_t*, void*) ()
#3 <signal handler called>
#4 0xf20ee0e0 in GSTextureOGL::Update(GSVector4i const&, void const*, int) () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#5 0xf20bc067 in GSRendererHW:OhmyI_FFXII(GSTexture*, GSTexture*, GSTextureCache:Wackoource*) () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#6 0xf20bd573 in GSRendererHW:Laughraw() () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#7 0xf20d5712 in GSState::FlushPrim() () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#8 0xf20dc137 in void GSState::GIFRegHandlerTEST<0>(GIFReg const*) () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#9 0xf20e67fa in void GSState::Transfer<3>(unsigned char const*, unsigned int) () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#10 0xf2062c50 in GSgifTransfer () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#11 0x0809a279 in SysMtgsThread::ExecuteTaskInThread() ()
#12 0x0834d686 in Threading:Tongue2xThread::_try_virtual_invoke(void (Threading:Tongue2xThread::*)()) ()
#13 0x0834db3b in Threading:Tongue2xThread::_internal_execute() ()
#14 0x0834dc62 in Threading:Tongue2xThread::_internal_callback(void*) ()
#15 0xf7120096 in start_thread () from /usr/lib32/libpthread.so.0
#16 0xf7042a7e in clone () from /usr/lib32/libc.so.6
/***************************************************************************/
Sorry, here, this one should be good, I stop when I have the sigkill of the popup.
And with all thread:

Thread 7 (Thread 0xee13cb40 (LWP 4087)):
#0 0xf7fd7da0 in ?? ()
#1 0xf2740460 in ?? () from /usr/lib32/libasound.so.2
#2 0xf274f39d in ?? () from /usr/lib32/libasound.so.2
#3 0xf2739a80 in snd_pcm_writei () from /usr/lib32/libasound.so.2
#4 0xf6c599dd in ?? () from /usr/lib32/libSDL-1.2.so.0
#5 0xf6c2af82 in ?? () from /usr/lib32/libSDL-1.2.so.0
#6 0xf6c33b25 in ?? () from /usr/lib32/libSDL-1.2.so.0
#7 0xf6c7a748 in ?? () from /usr/lib32/libSDL-1.2.so.0
#8 0xf7120096 in start_thread () from /usr/lib32/libpthread.so.0
#9 0xf7042a7e in clone () from /usr/lib32/libc.so.6

Thread 6 (Thread 0xf0913b40 (LWP 4086)):
#0 0xf7fd7da0 in ?? ()
#1 0x083398e1 in pxOnAssert(DiagnosticOrigin const&, wchar_t const*) ()
#2 0x08341426 in SysPageFaultSignalFilter(int, siginfo_t*, void*) ()
#3 <signal handler called>
#4 0xf20ee0e0 in GSTextureOGL::Update(GSVector4i const&, void const*, int) () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#5 0xf20bc067 in GSRendererHW:OhmyI_FFXII(GSTexture*, GSTexture*, GSTextureCache:Wackoource*) () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#6 0xf20bd573 in GSRendererHW:Laughraw() () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#7 0xf20d5712 in GSState::FlushPrim() () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#8 0xf20dc137 in void GSState::GIFRegHandlerTEST<0>(GIFReg const*) () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#9 0xf20e67fa in void GSState::Transfer<3>(unsigned char const*, unsigned int) () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#10 0xf2062c50 in GSgifTransfer () from /home/antoine/Source/pcsx2-git/bin/plugins/libGSdx-0.1.16.so
#11 0x0809a279 in SysMtgsThread::ExecuteTaskInThread() ()
#12 0x0834d686 in Threading:Tongue2xThread::_try_virtual_invoke(void (Threading:Tongue2xThread::*)()) ()
#13 0x0834db3b in Threading:Tongue2xThread::_internal_execute() ()
#14 0x0834dc62 in Threading:Tongue2xThread::_internal_callback(void*) ()
#15 0xf7120096 in start_thread () from /usr/lib32/libpthread.so.0
#16 0xf7042a7e in clone () from /usr/lib32/libc.so.6

Thread 5 (Thread 0xf31ffb40 (LWP 4085)):
#0 0xf7fd7da0 in ?? ()
#1 0x0834a364 in Threading:Wackoemaphore::WaitNoCancel() ()
#2 0x08099f2a in SysMtgsThread:TongueostVsyncStart() ()
#3 0x08079ad3 in gsPostVsyncStart() ()
#4 0x08066060 in rcntUpdate() ()
#5 0x080ae0e4 in _cpuEventTest_Shared() ()
#6 0x082a187b in recEventTest ()
#7 0x09f7c005 in eeRecDispatchers ()
#8 0x0000281f in ?? ()
#9 0x00000000 in ?? ()
---Type <return> to continue, or q <return> to quit---

Thread 3 (Thread 0xf3b44b40 (LWP 4083)):
#0 0xf7fd7da0 in ?? ()
#1 0x0809bf9a in VU_Thread::ExecuteRingBuffer() ()
#2 0x0809bf71 in VU_Thread::ExecuteTaskInThread() ()
#3 0x0834d686 in Threading:Tongue2xThread::_try_virtual_invoke(void (Threading:Tongue2xThread::*)()) ()
#4 0x0834db3b in Threading:Tongue2xThread::_internal_execute() ()
#5 0x0834dc62 in Threading:Tongue2xThread::_internal_callback(void*) ()
#6 0xf7120096 in start_thread () from /usr/lib32/libpthread.so.0
#7 0xf7042a7e in clone () from /usr/lib32/libc.so.6

Thread 2 (Thread 0xf4686b40 (LWP 4081)):
#0 0xf7fd7da0 in ?? ()
#1 0x0821c50f in pxEvtQueue::Idle() ()
#2 0x0821cdaf in ExecutorThread::ExecuteTaskInThread() ()
#3 0x0834d686 in Threading:Tongue2xThread::_try_virtual_invoke(void (Threading:Tongue2xThread::*)()) ()
#4 0x0834db3b in Threading:Tongue2xThread::_internal_execute() ()
#5 0x0834dc62 in Threading:Tongue2xThread::_internal_callback(void*) ()
#6 0xf7120096 in start_thread () from /usr/lib32/libpthread.so.0
#7 0xf7042a7e in clone () from /usr/lib32/libc.so.6

Thread 1 (Thread 0xf645a940 (LWP 4077)):
#0 0xf7f20ca5 in wxEvtHandler:TonguerocessEvent(wxEvent&) () from /usr/lib32/libwx_baseu-2.8.so.0
#1 0xf7cf4990 in wxWindowBase::UpdateWindowUI(long) () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#2 0xf7c9f7c1 in wxFrameBase::UpdateWindowUI(long) () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#3 0xf7bf6cf5 in wxWindow:OhmynInternalIdle() () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#4 0xf7bee75a in wxTopLevelWindowGTK:OhmynInternalIdle() () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#5 0xf7c9f2d8 in wxFrameBase:OhmynInternalIdle() () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#6 0xf7c4397a in wxFrame:OhmynInternalIdle() () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#7 0xf7c6f2b5 in wxAppBase:WackoendIdleEvents(wxWindow*, wxIdleEvent&) () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#8 0xf7c6f87a in wxAppBase:TonguerocessIdle() () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#9 0xf7bc6c6a in ?? () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#10 0xf6e10c40 in ?? () from /usr/lib32/libglib-2.0.so.0
#11 0xf6e14097 in g_main_context_dispatch () from /usr/lib32/libglib-2.0.so.0
#12 0xf6e14458 in ?? () from /usr/lib32/libglib-2.0.so.0
#13 0xf6e14753 in g_main_loop_run () from /usr/lib32/libglib-2.0.so.0
#14 0xf73cba75 in gtk_main () from /usr/lib32/libgtk-x11-2.0.so.0
#15 0xf7bde9d3 in wxEventLoop::Run() () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#16 0xf7c6f584 in wxAppBase::MainLoop() () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#17 0xf7c6f0e0 in wxAppBase:OhmynRun() () from /usr/lib32/libwx_gtk2u_core-2.8.so.0
#18 0xf7ebe706 in wxEntry(int&, wchar_t**) () from /usr/lib32/libwx_baseu-2.8.so.0
#19 0xf7ebe7a3 in wxEntry(int&, char**) () from /usr/lib32/libwx_baseu-2.8.so.0
#20 0x081db87b in main ()
Laptop: Arch Linux x86_64
CPU :Core i3-3217U @ 1.8Ghz
GPU: intel HD4000
4GO RAM DDR3-1600Mhz
Desktop: Arch Linux x86_64
CPU : Core i7 2600k @ 4.1Ghz
GPU : Nvidia GTX 770 OC Gigabyte
8GO Ram dual channel DDR3-1600 Mhz
Reply




Users browsing this thread: 1 Guest(s)