Bug 473080 - libpulse segfaults on invalidated **environ
Summary: libpulse segfaults on invalidated **environ
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: Fedora
Classification: Fedora
Component: pulseaudio
Version: 10
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Lennart Poettering
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 470686 (view as bug list)
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2008-11-26 14:34 UTC by Josef Bacik
Modified: 2008-12-26 19:33 UTC (History)
11 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2008-12-16 13:26:44 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Josef Bacik 2008-11-26 14:34:27 UTC
Description of problem:
Whenever I try to run xine it segfaults

Version-Release number of selected component (if applicable):
[josef@localhost ~]$ rpm -q xine
xine-0.99.5-5.fc10.x86_64
[josef@localhost ~]$ rpm -q pulseaudio
pulseaudio-0.9.13-6.fc10.x86_64


How reproducible:
Everytime

Steps to Reproduce:
1.Run Xine
2....
3.No profit
  
Actual results:
Segfault

Expected results:
No Segfault

Additional info:

[josef@localhost ~]$ gdb xine
GNU gdb Fedora (6.8-29.fc10) 
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 "x86_64-redhat-linux-gnu"...                      
(no debugging symbols found)                                                 
Missing separate debuginfos, use: debuginfo-install xine-0.99.5-5.fc10.x86_64
(gdb) run                                                                    
Starting program: /usr/bin/xine                                              
(no debugging symbols found)                                                 
(no debugging symbols found)                                                 
[Thread debugging using libthread_db enabled]                                
[New Thread 0x7f9c0049f7a0 (LWP 30312)]                                      
This is xine (X11 gui) - a free video player v0.99.5.                        
(c) 2000-2007 The xine Team.                                                 
[New Thread 0x7f9bfb5ad950 (LWP 30315)]                                      
[New Thread 0x7f9bfabac950 (LWP 30316)]                                      
[New Thread 0x7f9bf5688950 (LWP 30317)]                                      
[New Thread 0x7f9bf4450950 (LWP 30318)]                                      
[New Thread 0x7f9bf3441950 (LWP 30319)]                                      

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f9bf3441950 (LWP 30319)]    
0x00000038c6c5a3b6 in pa_init_proplist (p=0xfde510) at pulsecore/proplist-util.c:47
47          for (e = environ; *e; e++) {                                           
(gdb) list
42      #endif
43          char **e;
44                   
45          pa_assert(p);
46                       
47          for (e = environ; *e; e++) {
48                                      
49              if (pa_startswith(*e, "PULSE_PROP_")) {
50                  size_t kl = strcspn(*e+11, "=");   
51                  char *k;                           
(gdb) list
52        
53                  if ((*e)[11+kl] != '=')
54                      continue;          
55                                         
56                  if (!pa_utf8_valid(*e+11+kl+1))
57                      continue;                  
58                                                 
59                  k = pa_xstrndup(*e+11, kl);    
60                                                 
61                  if (pa_proplist_contains(p, k)) {
(gdb) print e                                        
$1 = (char **) 0x0                                   
(gdb) print environ                                  
$2 = (char **) 0x7fff084cf5a8                        
(gdb) while (*(environ++))
 >print environ
 >print *environ
 >end
$3 = (char **) 0x7fff084cf5b0
$4 = 0x7fff084d141f "KDE_MULTIHEAD=false"
$5 = (char **) 0x7fff084cf5b8            
$6 = 0x7fff084d1433 "HOSTNAME=localhost.localdomain"
$7 = (char **) 0x7fff084cf5c0                       
$8 = 0x7fff084d1452 "GPG_AGENT_INFO=/tmp/gpg-onqdUm/S.gpg-agent:2725:1"
$9 = (char **) 0x7fff084cf5c8                                          
$10 = 0x7fff084d1484 "TERM=xterm"                                      
$11 = (char **) 0x7fff084cf5d0                                         
$12 = 0x7fff084d148f "XDG_MENU_PREFIX=kde4-"                           
$13 = (char **) 0x7fff084cf5d8                                         
$14 = 0x7fff084d14a5 "SHELL=/bin/bash"                                 
$15 = (char **) 0x7fff084cf5e0                                         
$16 = 0x7fff084d14b5 "DESKTOP_STARTUP_ID="                             
$17 = (char **) 0x7fff084cf5e8                                         
$18 = 0x7fff084d14c9 "XDG_SESSION_COOKIE=7dedadd83ed11d8957a0cbd0492b141f-1227563468.82288-1252581216"
$19 = (char **) 0x7fff084cf5f0                                                                        
$20 = 0x7fff084d1519 "HISTSIZE=1000"                                                                  
$21 = (char **) 0x7fff084cf5f8                                                                        
$22 = 0x7fff084d1527 "GTK2_RC_FILES=/etc/gtk-2.0/gtkrc:/home/josef/.gtkrc-2.0::/home/josef/.kde/share/config/gtkrc-2.0"
$23 = (char **) 0x7fff084cf600                                                                                         
$24 = 0x7fff084d1588 "KONSOLE_DBUS_SERVICE=:1.63"                                                                      
$25 = (char **) 0x7fff084cf608                                                                                         
$26 = 0x7fff084d15a3 "GS_LIB=/home/josef/.fonts"                                                                       
$27 = (char **) 0x7fff084cf610                                                                                         
$28 = 0x7fff084d15bd "GTK_RC_FILES=/etc/gtk/gtkrc:/home/josef/.gtkrc::/home/josef/.kde/share/config/gtkrc"             
$29 = (char **) 0x7fff084cf618                                                                                         
$30 = 0x7fff084d1611 "WINDOWID=41943041"                                                                               
$31 = (char **) 0x7fff084cf620                                                                                         
$32 = 0x7fff084d1623 "QTDIR=/usr/lib64/qt-3.3"                                                                         
$33 = (char **) 0x7fff084cf628                                                                                         
$34 = 0x7fff084d163b "QTINC=/usr/lib64/qt-3.3/include"                                                                 
$35 = (char **) 0x7fff084cf630                                                                                         
$36 = 0x7fff084d165b "KDE_FULL_SESSION=true"                                                                           
$37 = (char **) 0x7fff084cf638                                                                                         
$38 = 0x7fff084d1671 "USER=josef"                                                                                      
$39 = (char **) 0x7fff084cf640                                                                                         
$40 = 0x7fff084d167c "LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:do=00;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;4---Type <return> to continue, or q <return> to quit---
3:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=00;32:*.tar=00;31:*.tgz=0"...
$41 = (char **) 0x7fff084cf648                                        
$42 = 0x7fff084d1abd "GNOME_KEYRING_SOCKET=/tmp/keyring-e9Ceta/socket"
$43 = (char **) 0x7fff084cf650                                        
$44 = 0x7fff084d1aed "SSH_AUTH_SOCK=/tmp/ssh-QAiNuR2453/agent.2453"   
$45 = (char **) 0x7fff084cf658                                        
$46 = 0x7fff084d1b1a "USERNAME=josef"                                 
$47 = (char **) 0x7fff084cf660                                        
$48 = 0x7fff084d1b29 "SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/2889,unix/unix:/tmp/.ICE-unix/2889"
$49 = (char **) 0x7fff084cf668                                                                      
$50 = 0x7fff084d1b77 "COLUMNS=156"                                                                  
$51 = (char **) 0x7fff084cf670                                                                      
$52 = 0x7fff084d1b83 "PATH=/usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/josef/bin"                                                                                                                                                      
$53 = (char **) 0x7fff084cf678                                                                                                                              
$54 = 0x7fff084d1c0f "DESKTOP_SESSION=kde"                                                                                                                  
$55 = (char **) 0x7fff084cf680                                                                                                                              
$56 = 0x7fff084d1c23 "MAIL=/var/spool/mail/josef"                                                                                                           
$57 = (char **) 0x7fff084cf688                                                                                                                              
$58 = 0x7fff084d1c3e "_=/usr/bin/gdb"                                                                                                                       
$59 = (char **) 0x7fff084cf690                                                                                                                              
$60 = 0x7fff084d1c4d "DRY_RUN=1"                                                                                                                            
$61 = (char **) 0x7fff084cf698                                                                                                                              
$62 = 0x7fff084d1c57 "PWD=/home/josef"                                                                                                                      
$63 = (char **) 0x7fff084cf6a0                                                                                                                              
$64 = 0x7fff084d1c67 "INPUTRC=/etc/inputrc"                                                                                                                 
$65 = (char **) 0x7fff084cf6a8                                                                                                                              
$66 = 0x7fff084d1c7c "XMODIFIERS=@im=none"                                                                                                                  
$67 = (char **) 0x7fff084cf6b0                                                                                                                              
$68 = 0x7fff084d1c90 "KDE_SESSION_UID=500"                                                                                                                  
$69 = (char **) 0x7fff084cf6b8                                                                                                                              
$70 = 0x7fff084d1ca4 "GNOME_KEYRING_PID=2451"                                                                                                               
$71 = (char **) 0x7fff084cf6c0                                                                                                                              
$72 = 0x7fff084d1cbb "LANG=en_US.UTF-8"                                                                                                                     
$73 = (char **) 0x7fff084cf6c8                                                                                                                              
$74 = 0x7fff084d1ccc "KDE_IS_PRELINKED=1"                                                                                                                   
$75 = (char **) 0x7fff084cf6d0                                                                                                                              
$76 = 0x7fff084d1cdf "GDM_LANG=en_US.UTF-8"                                                                                                                 
---Type <return> to continue, or q <return> to quit---                                                                                                      
$77 = (char **) 0x7fff084cf6d8                                                                                                                              
$78 = 0x7fff084d1cf4 "KDEDIRS=/usr"                                                                                                                         
$79 = (char **) 0x7fff084cf6e0                                                                                                                              
$80 = 0x7fff084d1d01 "LINES=39"                                                                                                                             
$81 = (char **) 0x7fff084cf6e8                                                                                                                              
$82 = 0x7fff084d1d0a "KONSOLE_DBUS_SESSION=/Sessions/8"                                                                                                     
$83 = (char **) 0x7fff084cf6f0                                                                                                                              
$84 = 0x7fff084d1d2b "GDMSESSION=kde"                                                                                                                       
$85 = (char **) 0x7fff084cf6f8                                                                                                                              
$86 = 0x7fff084d1d3a "SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass"                                                                                   
$87 = (char **) 0x7fff084cf700                                                                                                                              
$88 = 0x7fff084d1d6d "HOME=/home/josef"                                                                                                                     
$89 = (char **) 0x7fff084cf708                                                                                                                              
$90 = 0x7fff084d1d7e "SHLVL=3"                                                                                                                              
$91 = (char **) 0x7fff084cf710                                                                                                                              
$92 = 0x7fff084d1d86 "COLORFGBG=15;0"                                                                                                                       
$93 = (char **) 0x7fff084cf718                                                                                                                              
$94 = 0x7fff084d1d95 "KDE_SESSION_VERSION=4"                                                                                                                
$95 = (char **) 0x7fff084cf720                                                                                                                              
$96 = 0x7fff084d1dab "LANGUAGE=en_US"                                                                                                                       
$97 = (char **) 0x7fff084cf728                                                                                                                              
$98 = 0x7fff084d1dba "XCURSOR_THEME=default"                                                                                                                
$99 = (char **) 0x7fff084cf730                                                                                                                              
$100 = 0x7fff084d1dd0 "LOGNAME=josef"                                                                                                                       
$101 = (char **) 0x7fff084cf738                                                                                                                             
$102 = 0x7fff084d1dde "CVS_RSH=ssh"                                                                                                                         
$103 = (char **) 0x7fff084cf740                                                                                                                             
$104 = 0x7fff084d1dea "QTLIB=/usr/lib64/qt-3.3/lib"                                                                                                         
$105 = (char **) 0x7fff084cf748                                                                                                                             
$106 = 0x7fff084d1e06 "XDG_DATA_DIRS=/usr/share/kde-settings/kde-profile/default/share:/usr/local/share:/usr/share"                                         
$107 = (char **) 0x7fff084cf750                                                                                                                             
$108 = 0x7fff084d1e62 "DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-YRb8IIUDka,guid=0571bdc2f6f0e27d31c23049492b21cc"
$109 = (char **) 0x7fff084cf758
$110 = 0x7fff084d1ec4 "LESSOPEN=|/usr/bin/lesspipe.sh %s"
$111 = (char **) 0x7fff084cf760
$112 = 0x7fff084d1ee6 "DISPLAY=:0.0"
$113 = (char **) 0x7fff084cf768
$114 = 0x7fff084d1ef3 "PROFILEHOME="
---Type <return> to continue, or q <return> to quit---
$115 = (char **) 0x7fff084cf770
$116 = 0x7fff084d1f00 "QT_PLUGIN_PATH=/usr/lib64/kde4/plugins:/home/josef/.kde/lib64/kde4/plugins/:/usr/lib64/kde4/plugins/"
$117 = (char **) 0x7fff084cf778
$118 = 0x7fff084d1f65 "GTK_IM_MODULE=gtk-im-context-simple"
$119 = (char **) 0x7fff084cf780
$120 = 0x7fff084d1f89 "DISABLE_IMSETTINGS=1"
$121 = (char **) 0x7fff084cf788
$122 = 0x7fff084d1f9e "G_BROKEN_FILENAMES=1"
$123 = (char **) 0x7fff084cf790
$124 = 0x7fff084d1fb3 "XAUTHORITY=/var/run/gdm/auth-for-josef-Ojq5CR/database"
$125 = (char **) 0x7fff084cf798
$126 = 0x0
(gdb) bt
#0  0x00000038c6c5a3b6 in pa_init_proplist (p=0xfde510) at pulsecore/proplist-util.c:47
#1  0x00000038c6c0cb69 in setup_complete_callback (pd=0xfe65a0, command=2, tag=1, t=0xfe62a0, userdata=0xfde420) at pulse/context.c:464
#2  0x00000038c6c48b81 in run_action (pd=0xfe65a0, r=0xfe1ca0, command=2, ts=0xfe62a0) at pulsecore/pdispatch.c:183
#3  0x00000038c6c48eb3 in pa_pdispatch_run (pd=0xfe65a0, packet=0xfe6270, creds=0xfe64c0, userdata=0xfde420) at pulsecore/pdispatch.c:234
#4  0x00000038c6c0c1aa in pstream_packet_callback (p=0xfe6370, packet=0xfe6270, creds=0xfe64c0, userdata=0xfde420) at pulse/context.c:323
#5  0x00000038c6c4c715 in do_read (p=0xfe6370) at pulsecore/pstream.c:816
#6  0x00000038c6c49d48 in do_something (p=0xfe6370) at pulsecore/pstream.c:184
#7  0x00000038c6c49f57 in io_callback (io=0xfe6220, userdata=0xfe6370) at pulsecore/pstream.c:213
#8  0x00000038c6c3b706 in callback (m=0xfde118, e=0xfe6140, fd=19, f=PA_IO_EVENT_INPUT, userdata=0xfe6220) at pulsecore/iochannel.c:119
#9  0x00000038c6c1a1e7 in dispatch_pollfds (m=0xfde0c0) at pulse/mainloop.c:683
#10 0x00000038c6c1aea2 in pa_mainloop_dispatch (m=0xfde0c0) at pulse/mainloop.c:896
#11 0x00000038c6c1b027 in pa_mainloop_iterate (m=0xfde0c0, block=1, retval=0x0) at pulse/mainloop.c:926
#12 0x00000038c6c1b08a in pa_mainloop_run (m=0xfde0c0, retval=0x0) at pulse/mainloop.c:941
#13 0x00000038c6c2a0a2 in thread (userdata=0xfddea0) at pulse/thread-mainloop.c:90
#14 0x00000038c6c5b201 in internal_thread_func (userdata=0xfde240) at pulsecore/thread-posix.c:72
#15 0x0000003916a073da in start_thread () from /lib64/libpthread.so.0
#16 0x0000003915ee627d in clone () from /lib64/libc.so.6

Comment 1 Rex Dieter 2008-11-26 18:16:53 UTC
See also:
xine-lib-pulseaudio: bug #470686
xine: https://bugzilla.rpmfusion.org/show_bug.cgi?id=125

Comment 2 Lennart Poettering 2008-12-08 22:49:02 UTC
Is this possibly related to using/having installed those closed source Real codecs? 

They do weird shit with environ**:

src/libreal/real_common.h:  char **__environ __attribute__((weak, alias("environ")));

While libpulse certainly shouldn't crash when environ is NULL I think this should be fixed in Xine too, it shouldn't invalidate **environ like that.

Comment 3 Lennart Poettering 2008-12-08 22:53:10 UTC
*** Bug 470686 has been marked as a duplicate of this bug. ***

Comment 4 Josef Bacik 2008-12-09 13:47:12 UTC
I have the rpmfusion codecs installed if thats what you are asking.

Comment 5 Lennart Poettering 2008-12-09 14:54:28 UTC
Dunno what "rpmfusion codecs" is. Do they include the RealNetwork CODECs or not?

Comment 6 Rex Dieter 2008-12-09 14:58:46 UTC
rpmfusion does not distribute those, afaik.

Comment 7 udo 2008-12-09 15:12:09 UTC
I have the same issue. What info can I provide about codecs? How?
I do use rpmfusion.

Who will take action to resolve this issue?
Over here root does also see the symptom.

Comment 8 Lennart Poettering 2008-12-16 13:26:44 UTC
This has now been fixed upstream. I will upload a new version of PA including this patch to F10 and Rawhide shortly.


Note You need to log in before you can comment on or make changes to this bug.