Re: [Powertop] segmentation fault when shutting down

Sergey Senozhatsky <sergey.senozhatsky at gmail.com>
Newsgroups dev.linux.lists.powertop
Message-ID <20140509081800.GC937@swordfish>
On (05/09/14 08:14), Joerg Mayer wrote:
> I also get a segfault.
> 
> Ciao
>     Jörg
> 
> powertop (git describe: v2.6-rc2-1-gb162f5d)
> 
> (gdb) bt
> #0  0x00000010 in ?? ()
> #1  0x0805339b in close_display () at ../../src/display.cpp:94
> #2  0x08090c30 in clean_shutdown () at ../../src/main.cpp:365
> #3  0x0804e575 in main (argc=1, argv=0xbff65814) at ../../src/main.cpp:500
> (gdb) quit
> 

ok... I took a quick look, and I didn't understand some things.


commit eb08d4480969c8e48347c7621bd96dc248ee2138
Author: Dan Kalowsky <daniel.kalowsky(a)intel.com>
Date:   Mon Apr 28 13:52:05 2014 -0700

    Remove another memory leak
    
    Pointer gets over written without ever being properly cleaned up.  This
    should solve that problem.


	+class tuning_window *tune_window;
	+
	 class tuning_window: public tab_window {
	 public:
	        virtual void repaint(void);
	@@ -80,6 +82,11 @@ void initialize_tuning(void)
	        init_tuning();
	 
	        w->cursor_max = all_tunables.size() - 1;
	+
	+       if (tune_window)
	+               delete tune_window;
	+
	+       tune_window = w;
	 }
	 
	
	@@ -305,6 +312,10 @@ void clear_tuning()
	                delete all_untunables[i];
	        }
	        all_untunables.clear();
	+
	+       if (tune_window)
	+               delete tune_window;
	+       tune_window = NULL;
		^^^^^^^^^
	 }
	 
	 void auto_toggle_tuning()


tuning_window::window_refresh() calls clear_tuning(). which deletes tune_window
and sets it to NULL. then init_tuning() called.

the fishy part is that it all happens within that `if (w)' in display.cpp window_refresh()

        if (w) {
                w->ypad_pos = 0;
                w->xpad_pos = 0;
                w->window_refresh();
		^^^^^ here we kill tuning_window
                w->repaint();
		^^^^^ and here we try to execute its function?
        }

can someone check (or prove me wrong) if we actually have problems here?
if we do -- then was it actually tested?

	-ss

> jmayer(a)egg:~/work/power/powertop/git/build(master)> lsb_release -a
> LSB Version: core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-ia32:core-3.2-ia32:core-4.0-ia32:desktop-4.0-ia32:desktop-4.0-noarch:graphics-2.0-ia32:graphics-2.0-noarch:graphics-3.2-ia32:graphics-3.2-noarch:graphics-4.0-ia32:graphics-4.0-noarch
> Distributor ID: openSUSE project
> Description:    openSUSE 13.1 (Bottle) (i586)
> Release:        13.1
> Codename:       Bottle
> 
> jmayer(a)egg:~/work/power/powertop/git/build(master)> uname -a
> Linux egg 3.14.2-1.g1474ea5-desktop #1 SMP PREEMPT Sun Apr 27 14:35:22 UTC 2014 (1474ea5) i686 i686 i386 GNU/Linux
> 
> 
> jmayer(a)egg:~/work/power/powertop/git/build(master)> cat /proc/cpuinfo
> processor       : 0
> vendor_id       : GenuineIntel
> cpu family      : 6
> model           : 23
> model name      : Intel(R) Core(TM)2 Duo CPU     T8300  @ 2.40GHz
> stepping        : 6
> microcode       : 0x60f
> cpu MHz         : 2400.000
> cache size      : 3072 KB
> physical id     : 0
> siblings        : 2
> core id         : 0
> cpu cores       : 2
> apicid          : 0
> initial apicid  : 0
> fdiv_bug        : no
> f00f_bug        : no
> coma_bug        : no
> fpu             : yes
> fpu_exception   : yes
> cpuid level     : 10
> wp              : yes
> flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat
> +pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon
> +pebs bts aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1
> +lahf_lm ida dtherm tpr_shadow vnmi flexpriority
> bogomips        : 4788.29
> clflush size    : 64
> cache_alignment : 64
> address sizes   : 36 bits physical, 48 bits virtual
> power management:
> [output for processor 1 deleted]
> 
> _______________________________________________
> PowerTop mailing list
> PowerTop(a)lists.01.org
> https://lists.01.org/mailman/listinfo/powertop
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.