Bug 90869 - Crash when using gstreamer engine on 64-bit
Summary: Crash when using gstreamer engine on 64-bit
Status: RESOLVED FIXED
Alias: None
Product: amarok
Classification: Applications
Component: general (show other bugs)
Version: 1.1
Platform: Mandrake RPMs Linux
: NOR crash
Target Milestone: ---
Assignee: Amarok Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-10-06 18:06 UTC by Doug Keller
Modified: 2006-06-11 12:32 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Doug Keller 2004-10-06 18:06:08 UTC
Version:           1.1 (using KDE KDE 3.2.3)
Installed from:    Mandrake RPMs
Compiler:          gcc version 3.3.2 (Mandrake Linux 10.0 3.3.2-6.1mdk) 
OS:                Linux

gstreamer engine crashes when compiled in 64-bit mode, the problem is in gstengine.cpp,
the two calls to gst_element_link_many() are incorrect in 64-bit mode.  This function
is a variable arg function which needs to terminate with a NULL but the code terminates
it with a zero which is a 32-bit value not 64-bit therefore it doesn't real terminate the
variable arg function.

Patch to fix the problem:

--- amarok/src/engine/gst/gstengine.cpp~  2004-10-06 11:45:05.098550040 -0400
+++ amarok/src/engine/gst/gstengine.cpp   2004-10-06 11:44:25.030641288 -0400
@@ -415,7 +415,7 @@
         g_signal_connect( G_OBJECT( input->src ), "kio_resume", G_CALLBACK( kio_resume_cb ), input->bin );
     }

-    gst_element_link_many( input->src, input->spider, input->volume, 0 );
+    gst_element_link_many( input->src, input->spider, input->volume, NULL );
     // Prepare bin for playing
     gst_element_set_state( input->bin, GST_STATE_READY );

@@ -932,7 +932,7 @@
     g_signal_connect ( G_OBJECT( m_gst_outputThread ), "error", G_CALLBACK ( outputError_cb ), 0 );

     /* link elements */
-    gst_element_link_many( m_gst_adder, m_gst_queue, m_gst_identity, m_gst_volume, m_gst_audioscale, m_gst_audioconvert, m_gst_audiosi
nk, 0 );
+    gst_element_link_many( m_gst_adder, m_gst_queue, m_gst_identity, m_gst_volume, m_gst_audioscale, m_gst_audioconvert, m_gst_audiosi
nk, NULL );

     setVolume( m_volume );
Comment 1 Mark Kretschmann 2004-10-06 19:05:57 UTC
CVS commit by markey: 

FIX: Crash when using GStreamer-engine on 64bit. (BR 90869)

CCMAIL: 90869-done@bugs.kde.org
CCMAIL: amarok-devel@lists.sf.net


  M +1 -0      ChangeLog   1.354
  M +3 -3      src/engine/gst/gstengine.cpp   1.198


--- kdeextragear-1/amarok/ChangeLog  #1.353:1.354
@@ -5,4 +5,5 @@
 
 VERSION 1.1.1:
+  FIX: Crash when using GStreamer-engine on 64bit. (BR 90869)
   CHG: New splash screen by Nenad Grujicic <mchitman@neobee.net>.
   FIX: Crash when fetching 1 missing cover using the fetch button. (BR 90673)

--- kdeextragear-1/amarok/src/engine/gst/gstengine.cpp  #1.197:1.198
@@ -410,5 +410,5 @@ GstEngine::load( const KURL& url, bool s
     }
 
-    gst_element_link_many( input->src, input->spider, input->audioconvert, input->audioscale, input->volume, 0 );
+    gst_element_link_many( input->src, input->spider, input->audioconvert, input->audioscale, input->volume, NULL );
     // Prepare bin for playing
     gst_element_set_state( input->bin, GST_STATE_READY );
@@ -922,5 +922,5 @@ GstEngine::createPipeline()
 
     // Put everything into the root bin
-    gst_bin_add_many( GST_BIN( m_gst_rootBin ), m_gst_inputThread, m_gst_outputThread, 0 );
+    gst_bin_add_many( GST_BIN( m_gst_rootBin ), m_gst_inputThread, m_gst_outputThread, NULL );
 
     // More buffers means less dropouts and higher latency
@@ -931,5 +931,5 @@ GstEngine::createPipeline()
 
     /* link elements */
-    gst_element_link_many( m_gst_adder, m_gst_queue, m_gst_identity, m_gst_volume, m_gst_audiosink, 0 );
+    gst_element_link_many( m_gst_adder, m_gst_queue, m_gst_identity, m_gst_volume, m_gst_audiosink, NULL );
 
     setVolume( m_volume );