reassign 622605 packagekit
notfound 622605 2.32.0-2
found 622605 0.6.12-2
tags 622605 + patch
kthxbye
Here's a backtrace. I built my own package hence the presence of the
actual line of pk-client.c, and never actually installed.
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7752cf7 in pk_client_create_helper_argv_envp (state=0x7b5270,
argv=0x7fffffffe248, envp=0x7fffffffe240) at pk-client.c:1878
1878 *envp[envpi++] = g_strdup_printf ("DISPLAY=%s",
display);
(gdb) bt
#0 0x00007ffff7752cf7 in pk_client_create_helper_argv_envp (state=0x7b5270,
argv=0x7fffffffe248, envp=0x7fffffffe240) at pk-client.c:1878
#1 0x00007ffff7752e26 in pk_client_create_helper_socket (state=0x7b5270) at
pk-client.c:1917
#2 0x00007ffff775328d in pk_client_get_tid_cb (object=0x6cb830, res=0x811300,
state=0x7b5270) at pk-client.c:2017
#3 0x00007ffff4ebffc9 in complete_in_idle_cb (data=0x7ffff2ad0e40)
at
/build/buildd-glib2.0_2.28.1-1+b1-amd64-6erLbp/glib2.0-2.28.1/./gio/gsimpleasyncresult.c:757
#4 0x00007ffff2e532e2 in g_main_dispatch (context=0x66af10) at
/build/buildd-glib2.0_2.28.1-1+b1-amd64-6erLbp/glib2.0-2.28.1/./glib/gmain.c:2440
#5 g_main_context_dispatch (context=0x66af10) at
/build/buildd-glib2.0_2.28.1-1+b1-amd64-6erLbp/glib2.0-2.28.1/./glib/gmain.c:3013
#6 0x00007ffff2e579a8 in g_main_context_iterate (context=0x66af10,
block=<value optimized out>, dispatch=<value optimized out>, self=<value
optimized out>)
at
/build/buildd-glib2.0_2.28.1-1+b1-amd64-6erLbp/glib2.0-2.28.1/./glib/gmain.c:3091
#7 0x00007ffff2e57eb5 in g_main_loop_run (loop=0x824e00) at
/build/buildd-glib2.0_2.28.1-1+b1-amd64-6erLbp/glib2.0-2.28.1/./glib/gmain.c:3299
#8 0x00007ffff578f5f7 in IA__gtk_main () at
/tmp/buildd/gtk+2.0-2.24.1/gtk/gtkmain.c:1255
#9 0x000000000040ab01 in ?? ()
#10 0x00007ffff2792c4d in __libc_start_main (main=<value optimized out>,
argc=<value optimized out>, ubp_av=<value optimized out>,
init=<value optimized out>, fini=<value optimized out>, rtld_fini=<value
optimized out>, stack_end=0x7fffffffe678) at libc-start.c:228
#11 0x000000000040a839 in ?? ()
#12 0x00007fffffffe678 in ?? ()
#13 0x000000000000001c in ?? ()
#14 0x0000000000000001 in ?? ()
#15 0x00007fffffffe96c in ?? ()
#16 0x0000000000000000 in ?? ()
So I looked into this and I'm really confused as to why this
segfaults. I also don't know how the attached patch fixes this for me.
Any ideas?
--
Jonny Lamb, UK
[email protected]
--- packagekit-0.6.12.orig/lib/packagekit-glib2/pk-client.c 2011-04-19
19:58:40.337900003 +0100
+++ packagekit-0.6.12/lib/packagekit-glib2/pk-client.c 2011-04-19
19:58:56.249900251 +0100
@@ -1841,13 +1841,14 @@
static gboolean
pk_client_create_helper_argv_envp (PkClientState *state,
gchar ***argv,
- gchar ***envp)
+ gchar ***envp_out)
{
const gchar *dialog = NULL;
const gchar *display;
const gchar *term;
gboolean ret;
guint envpi = 0;
+ gchar **envp;
/* check we have the right file */
ret = g_file_test ("/usr/bin/debconf-communicate",
@@ -1859,23 +1860,24 @@
*argv = g_new0 (gchar *, 2);
*argv[0] = g_strdup ("/usr/bin/debconf-communicate");
- *envp = g_new0 (gchar *, 8);
- *envp[envpi++] = g_strdup ("DEBCONF_DB_REPLACE=configdb");
- *envp[envpi++] = g_strdup ("DEBCONF_DB_OVERRIDE=Pipe{infd:none
outfd:none}");
+ *envp_out = g_new0 (gchar *, 8);
+ envp = *envp_out;
+ envp[envpi++] = g_strdup ("DEBCONF_DB_REPLACE=configdb");
+ envp[envpi++] = g_strdup ("DEBCONF_DB_OVERRIDE=Pipe{infd:none
outfd:none}");
if (pk_debug_is_verbose ())
- *envp[envpi++] = g_strdup ("DEBCONF_DEBUG=.");
+ envp[envpi++] = g_strdup ("DEBCONF_DEBUG=.");
/* do we have an available terminal to use */
term = g_getenv ("TERM");
if (term != NULL) {
- *envp[envpi++] = g_strdup_printf ("TERM=%s", term);
+ envp[envpi++] = g_strdup_printf ("TERM=%s", term);
dialog = "dialog";
}
/* do we have access to the display */
display = g_getenv ("DISPLAY");
if (display != NULL) {
- *envp[envpi++] = g_strdup_printf ("DISPLAY=%s", display);
+ envp[envpi++] = g_strdup_printf ("DISPLAY=%s", display);
if (g_strcmp0 (g_getenv ("KDE_FULL_SESSION"), "true") == 0)
dialog = "kde";
else
@@ -1884,7 +1886,7 @@
/* indicate a prefered frontend */
if (dialog != NULL) {
- *envp[envpi++] = g_strdup_printf ("DEBIAN_FRONTEND=%s", dialog);
+ envp[envpi++] = g_strdup_printf ("DEBIAN_FRONTEND=%s", dialog);
g_debug ("using frontend %s", dialog);
}
out: