Thread: [perfmon2] segmentation fault while running pfmon
Status: Beta
Brought to you by:
seranian
From: Qingyuan D. <dd...@gm...> - 2009-09-24 07:01:18
|
Hello, I patched the kernel and installed both libpfm and perfmon, however I got segmentation fault while I tried running command: "pfmon --help'. Could anyone help me to figure it out please? I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the latest version of libpfm, perfmon, and the base system patch from the sourceforge page. My processor is Intel core i7 920 and I adjusted related configuration when I configured the kernel. Following is the debug message from gdb: qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make install [sudo] password for qdeng: make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' make[2]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o pfmon_task.o pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o pfmon_os.o pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o pfmon_gen_ia32.o pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT -I/usr/local/include -DCONFIG_PFMON_I386 -DPFMON_DEBUG -DDATADIR=\"/usr/local/share/pfmon\" -I. -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g smpl_mod/libsmplfmt.a -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic -L/usr/local/lib -lpfm mkdir -p /usr/local/bin install -m 755 pfmon /usr/local/bin/pfmon ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' mkdir -p /usr/local/bin install -m 755 pfdbg /usr/local/bin/pfdbg make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' mkdir -p /usr/local/share/man/man1 install -m 644 pfmon.1 /usr/local/share/man/man1 make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help Segmentation fault qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon GNU gdb 6.8-debian 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 "i486-linux-gnu"... (gdb) run --help Starting program: /usr/local/bin/pfmon --help [Thread debugging using libthread_db enabled] [New Thread 0xb7e598d0 (LWP 4437)] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xb7e598d0 (LWP 4437)] 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 (gdb) Thanks! Qingyuan |
From: stephane e. <er...@go...> - 2009-09-24 07:25:22
|
What does ldd pfmon say? On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng <dd...@gm...> wrote: > Hello, > > I patched the kernel and installed both libpfm and perfmon, however I got > segmentation fault while I tried running command: "pfmon --help'. Could > anyone help me to figure it out please? > > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the latest version > of libpfm, perfmon, and the base system patch from the sourceforge page. My > processor is Intel core i7 920 and I adjusted related configuration when I > configured the kernel. Following is the debug message from gdb: > > > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make install > [sudo] password for qdeng: > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > make[2]: Entering directory > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > make[2]: Nothing to be done for `all'. > make[2]: Leaving directory > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o pfmon_task.o > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o pfmon_os.o > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o pfmon_gen_ia32.o > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT -I/usr/local/include > -DCONFIG_PFMON_I386 -DPFMON_DEBUG -DDATADIR=\"/usr/local/share/pfmon\" -I. > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g smpl_mod/libsmplfmt.a > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic -L/usr/local/lib -lpfm > mkdir -p /usr/local/bin > install -m 755 pfmon /usr/local/bin/pfmon > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > mkdir -p /usr/local/bin > install -m 755 pfdbg /usr/local/bin/pfdbg > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > mkdir -p /usr/local/share/man/man1 > install -m 644 pfmon.1 /usr/local/share/man/man1 > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help > Segmentation fault > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon > GNU gdb 6.8-debian > 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 "i486-linux-gnu"... > (gdb) run --help > Starting program: /usr/local/bin/pfmon --help > [Thread debugging using libthread_db enabled] > [New Thread 0xb7e598d0 (LWP 4437)] > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread 0xb7e598d0 (LWP 4437)] > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > (gdb) > > Thanks! > Qingyuan > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry® Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9-12, 2009. Register now! > http://p.sf.net/sfu/devconf > _______________________________________________ > perfmon2-devel mailing list > per...@li... > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel > > |
From: Qingyuan D. <dd...@gm...> - 2009-09-24 07:28:54
|
it's linux-gate.so.1 => (0xb7ff6000) libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7fca000) libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7fa4000) librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7f9a000) libpfm.so.3 => /usr/local/lib/libpfm.so.3 (0xb7f1a000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7db7000) /lib/ld-linux.so.2 (0xb7ff7000) On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian <er...@go...>wrote: > What does ldd pfmon say? > > > On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng <dd...@gm...> wrote: > > Hello, > > > > I patched the kernel and installed both libpfm and perfmon, however I got > > segmentation fault while I tried running command: "pfmon --help'. Could > > anyone help me to figure it out please? > > > > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the latest > version > > of libpfm, perfmon, and the base system patch from the sourceforge page. > My > > processor is Intel core i7 920 and I adjusted related configuration when > I > > configured the kernel. Following is the debug message from gdb: > > > > > > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make install > > [sudo] password for qdeng: > > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > > make[2]: Entering directory > > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > > make[2]: Nothing to be done for `all'. > > make[2]: Leaving directory > > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o pfmon_task.o > > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o pfmon_os.o > > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o pfmon_gen_ia32.o > > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o > > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT > -I/usr/local/include > > -DCONFIG_PFMON_I386 -DPFMON_DEBUG -DDATADIR=\"/usr/local/share/pfmon\" > -I. > > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g > smpl_mod/libsmplfmt.a > > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic -L/usr/local/lib > -lpfm > > mkdir -p /usr/local/bin > > install -m 755 pfmon /usr/local/bin/pfmon > > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen > > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > > mkdir -p /usr/local/bin > > install -m 755 pfdbg /usr/local/bin/pfdbg > > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > > mkdir -p /usr/local/share/man/man1 > > install -m 644 pfmon.1 /usr/local/share/man/man1 > > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help > > Segmentation fault > > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon > > GNU gdb 6.8-debian > > 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 "i486-linux-gnu"... > > (gdb) run --help > > Starting program: /usr/local/bin/pfmon --help > > [Thread debugging using libthread_db enabled] > > [New Thread 0xb7e598d0 (LWP 4437)] > > > > Program received signal SIGSEGV, Segmentation fault. > > [Switching to Thread 0xb7e598d0 (LWP 4437)] > > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > (gdb) > > > > Thanks! > > Qingyuan > > > > > ------------------------------------------------------------------------------ > > Come build with us! The BlackBerry® Developer Conference in SF, CA > > is the only developer event you need to attend this year. Jumpstart your > > developing skills, take BlackBerry mobile applications to market and stay > > ahead of the curve. Join us from November 9-12, 2009. Register > now! > > http://p.sf.net/sfu/devconf > > _______________________________________________ > > perfmon2-devel mailing list > > per...@li... > > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel > > > > > |
From: Qingyuan D. <dd...@gm...> - 2009-09-24 07:29:14
|
I tracked into the program and found the segmentation fault happened at: in pfmon.c pfmon_initialize()->pfm_get_max_event_name_len(&len) then it jumped into pfmlib_common.c pfm_get_max_event_name_len (len=0xbffd9460) at pfmlib_common.c:907 907 if (PFMLIB_INITIALIZED() == 0) (gdb) n 909 if (len == NULL) (gdb) n 912 for(i=0; i < pfm_current->pme_count; i++) { (gdb) n 913 str = pfm_current->get_event_name(i); (gdb) n 914 if (!str) (gdb) n 916 l = strlen(str); (gdb) n Program received signal SIGSEGV, Segmentation fault. 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 Here is the backtrace: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xb7e7a8d0 (LWP 5257)] 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 (gdb) backtrace #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) at pfmlib_common.c:916 #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at pfmon.c:1469 #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at pfmon.c:1900 (gdb) On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian <er...@go...>wrote: > What does ldd pfmon say? > > > On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng <dd...@gm...> wrote: > > Hello, > > > > I patched the kernel and installed both libpfm and perfmon, however I got > > segmentation fault while I tried running command: "pfmon --help'. Could > > anyone help me to figure it out please? > > > > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the latest > version > > of libpfm, perfmon, and the base system patch from the sourceforge page. > My > > processor is Intel core i7 920 and I adjusted related configuration when > I > > configured the kernel. Following is the debug message from gdb: > > > > > > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make install > > [sudo] password for qdeng: > > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > > make[2]: Entering directory > > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > > make[2]: Nothing to be done for `all'. > > make[2]: Leaving directory > > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o pfmon_task.o > > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o pfmon_os.o > > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o pfmon_gen_ia32.o > > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o > > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT > -I/usr/local/include > > -DCONFIG_PFMON_I386 -DPFMON_DEBUG -DDATADIR=\"/usr/local/share/pfmon\" > -I. > > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g > smpl_mod/libsmplfmt.a > > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic -L/usr/local/lib > -lpfm > > mkdir -p /usr/local/bin > > install -m 755 pfmon /usr/local/bin/pfmon > > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen > > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > > mkdir -p /usr/local/bin > > install -m 755 pfdbg /usr/local/bin/pfdbg > > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > > mkdir -p /usr/local/share/man/man1 > > install -m 644 pfmon.1 /usr/local/share/man/man1 > > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help > > Segmentation fault > > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon > > GNU gdb 6.8-debian > > 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 "i486-linux-gnu"... > > (gdb) run --help > > Starting program: /usr/local/bin/pfmon --help > > [Thread debugging using libthread_db enabled] > > [New Thread 0xb7e598d0 (LWP 4437)] > > > > Program received signal SIGSEGV, Segmentation fault. > > [Switching to Thread 0xb7e598d0 (LWP 4437)] > > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > (gdb) > > > > Thanks! > > Qingyuan > > > > > ------------------------------------------------------------------------------ > > Come build with us! The BlackBerry® Developer Conference in SF, CA > > is the only developer event you need to attend this year. Jumpstart your > > developing skills, take BlackBerry mobile applications to market and stay > > ahead of the curve. Join us from November 9-12, 2009. Register > now! > > http://p.sf.net/sfu/devconf > > _______________________________________________ > > perfmon2-devel mailing list > > per...@li... > > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel > > > > > |
From: stephane e. <er...@go...> - 2009-09-24 07:37:15
|
Are you sure the library in /usr/local/lib/libpfm.so.3 corresponds to the version you have just compiled? On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng <dd...@gm...> wrote: > I tracked into the program and found the segmentation fault happened at: > > in pfmon.c > pfmon_initialize()->pfm_get_max_event_name_len(&len) > > then it jumped into pfmlib_common.c > > pfm_get_max_event_name_len (len=0xbffd9460) at pfmlib_common.c:907 > 907 if (PFMLIB_INITIALIZED() == 0) > (gdb) n > 909 if (len == NULL) > (gdb) n > 912 for(i=0; i < pfm_current->pme_count; i++) { > (gdb) n > 913 str = pfm_current->get_event_name(i); > (gdb) n > 914 if (!str) > (gdb) n > 916 l = strlen(str); > (gdb) n > > Program received signal SIGSEGV, Segmentation fault. > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > Here is the backtrace: > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > (gdb) backtrace > #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) > at pfmlib_common.c:916 > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at pfmon.c:1469 > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at pfmon.c:1900 > (gdb) > > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian <er...@go...> > wrote: >> >> What does ldd pfmon say? >> >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng <dd...@gm...> wrote: >> > Hello, >> > >> > I patched the kernel and installed both libpfm and perfmon, however I >> > got >> > segmentation fault while I tried running command: "pfmon --help'. Could >> > anyone help me to figure it out please? >> > >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the latest >> > version >> > of libpfm, perfmon, and the base system patch from the sourceforge page. >> > My >> > processor is Intel core i7 920 and I adjusted related configuration when >> > I >> > configured the kernel. Following is the debug message from gdb: >> > >> > >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make install >> > [sudo] password for qdeng: >> > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> > make[2]: Entering directory >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> > make[2]: Nothing to be done for `all'. >> > make[2]: Leaving directory >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o >> > pfmon_task.o >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o pfmon_os.o >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o pfmon_gen_ia32.o >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT >> > -I/usr/local/include >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG -DDATADIR=\"/usr/local/share/pfmon\" >> > -I. >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g >> > smpl_mod/libsmplfmt.a >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic -L/usr/local/lib >> > -lpfm >> > mkdir -p /usr/local/bin >> > install -m 755 pfmon /usr/local/bin/pfmon >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> > mkdir -p /usr/local/bin >> > install -m 755 pfdbg /usr/local/bin/pfdbg >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> > mkdir -p /usr/local/share/man/man1 >> > install -m 644 pfmon.1 /usr/local/share/man/man1 >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help >> > Segmentation fault >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon >> > GNU gdb 6.8-debian >> > 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 "i486-linux-gnu"... >> > (gdb) run --help >> > Starting program: /usr/local/bin/pfmon --help >> > [Thread debugging using libthread_db enabled] >> > [New Thread 0xb7e598d0 (LWP 4437)] >> > >> > Program received signal SIGSEGV, Segmentation fault. >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> > (gdb) >> > >> > Thanks! >> > Qingyuan >> > >> > >> > ------------------------------------------------------------------------------ >> > Come build with us! The BlackBerry® Developer Conference in SF, CA >> > is the only developer event you need to attend this year. Jumpstart your >> > developing skills, take BlackBerry mobile applications to market and >> > stay >> > ahead of the curve. Join us from November 9-12, 2009. Register >> > now! >> > http://p.sf.net/sfu/devconf >> > _______________________________________________ >> > perfmon2-devel mailing list >> > per...@li... >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel >> > >> > > > |
From: Qingyuan D. <dd...@gm...> - 2009-09-24 07:42:53
|
It should be right. I "make install" the libpfm by the default config file and I checked that directory and it shows: lrwxrwxrwx 1 root root 15 2009-09-23 15:44 libpfm.so -> libpfm.so.3.9.0 lrwxrwxrwx 1 root root 15 2009-09-23 15:44 libpfm.so.3 -> libpfm.so.3.9.0 -rwxr-xr-x 1 root root 699335 2009-09-23 15:44 libpfm.so.3.9.0 that's the time I compile and install them yesterday. On Thu, Sep 24, 2009 at 3:37 AM, stephane eranian <er...@go...>wrote: > Are you sure the library in /usr/local/lib/libpfm.so.3 corresponds to the > version you have just compiled? > > > On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng <dd...@gm...> wrote: > > I tracked into the program and found the segmentation fault happened at: > > > > in pfmon.c > > pfmon_initialize()->pfm_get_max_event_name_len(&len) > > > > then it jumped into pfmlib_common.c > > > > pfm_get_max_event_name_len (len=0xbffd9460) at pfmlib_common.c:907 > > 907 if (PFMLIB_INITIALIZED() == 0) > > (gdb) n > > 909 if (len == NULL) > > (gdb) n > > 912 for(i=0; i < pfm_current->pme_count; i++) { > > (gdb) n > > 913 str = pfm_current->get_event_name(i); > > (gdb) n > > 914 if (!str) > > (gdb) n > > 916 l = strlen(str); > > (gdb) n > > > > Program received signal SIGSEGV, Segmentation fault. > > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > > > Here is the backtrace: > > > > Program received signal SIGSEGV, Segmentation fault. > > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] > > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > (gdb) backtrace > > #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) > > at pfmlib_common.c:916 > > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at pfmon.c:1469 > > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at pfmon.c:1900 > > (gdb) > > > > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian < > er...@go...> > > wrote: > >> > >> What does ldd pfmon say? > >> > >> > >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng <dd...@gm...> > wrote: > >> > Hello, > >> > > >> > I patched the kernel and installed both libpfm and perfmon, however I > >> > got > >> > segmentation fault while I tried running command: "pfmon --help'. > Could > >> > anyone help me to figure it out please? > >> > > >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the latest > >> > version > >> > of libpfm, perfmon, and the base system patch from the sourceforge > page. > >> > My > >> > processor is Intel core i7 920 and I adjusted related configuration > when > >> > I > >> > configured the kernel. Following is the debug message from gdb: > >> > > >> > > >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make install > >> > [sudo] password for qdeng: > >> > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> > make[2]: Entering directory > >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> > make[2]: Nothing to be done for `all'. > >> > make[2]: Leaving directory > >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o > >> > pfmon_task.o > >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o > pfmon_os.o > >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o pfmon_gen_ia32.o > >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o > >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT > >> > -I/usr/local/include > >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG -DDATADIR=\"/usr/local/share/pfmon\" > >> > -I. > >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g > >> > smpl_mod/libsmplfmt.a > >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic -L/usr/local/lib > >> > -lpfm > >> > mkdir -p /usr/local/bin > >> > install -m 755 pfmon /usr/local/bin/pfmon > >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen > >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> > mkdir -p /usr/local/bin > >> > install -m 755 pfdbg /usr/local/bin/pfdbg > >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> > mkdir -p /usr/local/share/man/man1 > >> > install -m 644 pfmon.1 /usr/local/share/man/man1 > >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help > >> > Segmentation fault > >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon > >> > GNU gdb 6.8-debian > >> > 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 "i486-linux-gnu"... > >> > (gdb) run --help > >> > Starting program: /usr/local/bin/pfmon --help > >> > [Thread debugging using libthread_db enabled] > >> > [New Thread 0xb7e598d0 (LWP 4437)] > >> > > >> > Program received signal SIGSEGV, Segmentation fault. > >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] > >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> > (gdb) > >> > > >> > Thanks! > >> > Qingyuan > >> > > >> > > >> > > ------------------------------------------------------------------------------ > >> > Come build with us! The BlackBerry® Developer Conference in SF, CA > >> > is the only developer event you need to attend this year. Jumpstart > your > >> > developing skills, take BlackBerry mobile applications to market and > >> > stay > >> > ahead of the curve. Join us from November 9-12, 2009. Register > >> > now! > >> > http://p.sf.net/sfu/devconf > >> > _______________________________________________ > >> > perfmon2-devel mailing list > >> > per...@li... > >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel > >> > > >> > > > > > > |
From: stephane e. <er...@go...> - 2009-09-24 08:20:19
|
On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng <dd...@gm...> wrote: > I tracked into the program and found the segmentation fault happened at: > > in pfmon.c > pfmon_initialize()->pfm_get_max_event_name_len(&len) > > then it jumped into pfmlib_common.c > > pfm_get_max_event_name_len (len=0xbffd9460) at pfmlib_common.c:907 > 907 if (PFMLIB_INITIALIZED() == 0) > (gdb) n > 909 if (len == NULL) > (gdb) n > 912 for(i=0; i < pfm_current->pme_count; i++) { > (gdb) n > 913 str = pfm_current->get_event_name(i); > (gdb) n > 914 if (!str) > (gdb) n > 916 l = strlen(str); > (gdb) n > > Program received signal SIGSEGV, Segmentation fault. > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > Here is the backtrace: > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > (gdb) backtrace > #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) > at pfmlib_common.c:916 > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at pfmon.c:1469 > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at pfmon.c:1900 > (gdb) I have seen this problem on an other machine as well. But I don't remember what the cause was. It has to do with the event table. Could you print the value of i (the event index) so we know where it stops? > > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian <er...@go...> > wrote: >> >> What does ldd pfmon say? >> >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng <dd...@gm...> wrote: >> > Hello, >> > >> > I patched the kernel and installed both libpfm and perfmon, however I >> > got >> > segmentation fault while I tried running command: "pfmon --help'. Could >> > anyone help me to figure it out please? >> > >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the latest >> > version >> > of libpfm, perfmon, and the base system patch from the sourceforge page. >> > My >> > processor is Intel core i7 920 and I adjusted related configuration when >> > I >> > configured the kernel. Following is the debug message from gdb: >> > >> > >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make install >> > [sudo] password for qdeng: >> > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> > make[2]: Entering directory >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> > make[2]: Nothing to be done for `all'. >> > make[2]: Leaving directory >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o >> > pfmon_task.o >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o pfmon_os.o >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o pfmon_gen_ia32.o >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT >> > -I/usr/local/include >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG -DDATADIR=\"/usr/local/share/pfmon\" >> > -I. >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g >> > smpl_mod/libsmplfmt.a >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic -L/usr/local/lib >> > -lpfm >> > mkdir -p /usr/local/bin >> > install -m 755 pfmon /usr/local/bin/pfmon >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> > mkdir -p /usr/local/bin >> > install -m 755 pfdbg /usr/local/bin/pfdbg >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> > mkdir -p /usr/local/share/man/man1 >> > install -m 644 pfmon.1 /usr/local/share/man/man1 >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help >> > Segmentation fault >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon >> > GNU gdb 6.8-debian >> > 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 "i486-linux-gnu"... >> > (gdb) run --help >> > Starting program: /usr/local/bin/pfmon --help >> > [Thread debugging using libthread_db enabled] >> > [New Thread 0xb7e598d0 (LWP 4437)] >> > >> > Program received signal SIGSEGV, Segmentation fault. >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> > (gdb) >> > >> > Thanks! >> > Qingyuan >> > >> > >> > ------------------------------------------------------------------------------ >> > Come build with us! The BlackBerry® Developer Conference in SF, CA >> > is the only developer event you need to attend this year. Jumpstart your >> > developing skills, take BlackBerry mobile applications to market and >> > stay >> > ahead of the curve. Join us from November 9-12, 2009. Register >> > now! >> > http://p.sf.net/sfu/devconf >> > _______________________________________________ >> > perfmon2-devel mailing list >> > per...@li... >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel >> > >> > > > |
From: Qingyuan D. <dd...@gm...> - 2009-09-24 20:14:07
|
Hi Stephane, Do you mean mean the i value in "for(i =0; i <pfm_current->pme_count; i++) " in pfmlib_common.c? Then it is 0 while the program stops. Thanks! -------------------------------------------------------------------- (gdb) b 1899 Breakpoint 1 at 0x804ead1: file pfmon.c, line 1899. (gdb) r --help Starting program: /usr/local/bin/pfmon --help [Thread debugging using libthread_db enabled] [New Thread 0xb7de48d0 (LWP 20951)] [Switching to Thread 0xb7de48d0 (LWP 20951)] Breakpoint 1, main (argc=2, argv=0xbf841dc4) at pfmon.c:1900 1900 pfmon_initialize(argv); (gdb) s pfmon_initialize (argv=0xbf841dc4) at pfmon.c:1387 1387 pfmon_get_version(); (gdb) n 1389 ret = pfmon_api_probe(); (gdb) n 1390 if (ret) { (gdb) n 1402 if (options.pfm_version != PERFMON_VERSION_20) (gdb) n 1403 options.opt_has_sets = 1; (gdb) n 1408 pfmon_arch_initialize(); (gdb) n 1410 setup_common_signals(); (gdb) n 1413 if (pfm_initialize() != PFMLIB_SUCCESS) (gdb) n 1416 pfm_get_version(&version); (gdb) n 1417 if (PFM_VERSION_MAJOR(version) < 3 || PFM_VERSION_MINOR(version) < 2) (gdb) n 1421 options.arg_mem_max = pfmon_get_perfmon_arg_mem_max(); (gdb) n 1423 ret = pfm_get_pmu_type(&options.pmu_type); (gdb) n 1424 if (ret != PFMLIB_SUCCESS) { (gdb) n 1428 ret = pfm_get_num_counters(&options.max_counters); (gdb) n 1429 if (ret != PFMLIB_SUCCESS) { (gdb) n 1433 if (check_forced_generic(argv[0])) { (gdb) n 1442 pfmon_detect(); (gdb) n 1444 options.session_timeout = PFMON_NO_TIMEOUT; (gdb) n 1445 options.interval = PFMON_NO_TIMEOUT; (gdb) n 1450 long_val = sysconf(_SC_NPROCESSORS_ONLN); (gdb) n 1451 if (long_val == -1) (gdb) n 1454 options.online_cpus = long_val; (gdb) n 1456 long_val = sysconf(_SC_NPROCESSORS_CONF); (gdb) n 1457 if (long_val == -1) (gdb) n 1460 options.config_cpus = long_val; (gdb) n 1462 pfmon_get_phys_cpu_mask(); (gdb) n 1464 clock_getres(CLOCK_MONOTONIC, &ts); (gdb) n 1465 options.clock_res = ts.tv_sec * 1000000000 + ts.tv_nsec; (gdb) n 1466 options.page_size = getpagesize(); (gdb) n 1467 options.cpu_mhz = pfmon_find_cpu_speed(); (gdb) n 1469 pfm_get_max_event_name_len(&len); (gdb) s pfm_get_max_event_name_len (len=0xbf841cc0) at pfmlib_common.c:907 907 if (PFMLIB_INITIALIZED() == 0) (gdb) n 909 if (len == NULL) (gdb) n 912 for(i=0; i < pfm_current->pme_count; i++) { (gdb) n 913 str = pfm_current->get_event_name(i); (gdb) p i $1 = 0 (gdb) n 914 if (!str) (gdb) n 916 l = strlen(str); (gdb) n Program received signal SIGSEGV, Segmentation fault. 0xb7e5c613 in strlen () from /lib/tls/i686/cmov/libc.so.6 (gdb) On Thu, Sep 24, 2009 at 4:20 AM, stephane eranian <er...@go...>wrote: > On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng <dd...@gm...> wrote: > > I tracked into the program and found the segmentation fault happened at: > > > > in pfmon.c > > pfmon_initialize()->pfm_get_max_event_name_len(&len) > > > > then it jumped into pfmlib_common.c > > > > pfm_get_max_event_name_len (len=0xbffd9460) at pfmlib_common.c:907 > > 907 if (PFMLIB_INITIALIZED() == 0) > > (gdb) n > > 909 if (len == NULL) > > (gdb) n > > 912 for(i=0; i < pfm_current->pme_count; i++) { > > (gdb) n > > 913 str = pfm_current->get_event_name(i); > > (gdb) n > > 914 if (!str) > > (gdb) n > > 916 l = strlen(str); > > (gdb) n > > > > Program received signal SIGSEGV, Segmentation fault. > > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > > > Here is the backtrace: > > > > Program received signal SIGSEGV, Segmentation fault. > > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] > > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > (gdb) backtrace > > #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) > > at pfmlib_common.c:916 > > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at pfmon.c:1469 > > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at pfmon.c:1900 > > (gdb) > > > I have seen this problem on an other machine as well. But I don't remember > what > the cause was. It has to do with the event table. > Could you print the value of i (the event index) so we know where it stops? > > > > > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian < > er...@go...> > > wrote: > >> > >> What does ldd pfmon say? > >> > >> > >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng <dd...@gm...> > wrote: > >> > Hello, > >> > > >> > I patched the kernel and installed both libpfm and perfmon, however I > >> > got > >> > segmentation fault while I tried running command: "pfmon --help'. > Could > >> > anyone help me to figure it out please? > >> > > >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the latest > >> > version > >> > of libpfm, perfmon, and the base system patch from the sourceforge > page. > >> > My > >> > processor is Intel core i7 920 and I adjusted related configuration > when > >> > I > >> > configured the kernel. Following is the debug message from gdb: > >> > > >> > > >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make install > >> > [sudo] password for qdeng: > >> > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> > make[2]: Entering directory > >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> > make[2]: Nothing to be done for `all'. > >> > make[2]: Leaving directory > >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o > >> > pfmon_task.o > >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o > pfmon_os.o > >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o pfmon_gen_ia32.o > >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o > >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT > >> > -I/usr/local/include > >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG -DDATADIR=\"/usr/local/share/pfmon\" > >> > -I. > >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g > >> > smpl_mod/libsmplfmt.a > >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic -L/usr/local/lib > >> > -lpfm > >> > mkdir -p /usr/local/bin > >> > install -m 755 pfmon /usr/local/bin/pfmon > >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen > >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> > mkdir -p /usr/local/bin > >> > install -m 755 pfdbg /usr/local/bin/pfdbg > >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> > mkdir -p /usr/local/share/man/man1 > >> > install -m 644 pfmon.1 /usr/local/share/man/man1 > >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help > >> > Segmentation fault > >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon > >> > GNU gdb 6.8-debian > >> > 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 "i486-linux-gnu"... > >> > (gdb) run --help > >> > Starting program: /usr/local/bin/pfmon --help > >> > [Thread debugging using libthread_db enabled] > >> > [New Thread 0xb7e598d0 (LWP 4437)] > >> > > >> > Program received signal SIGSEGV, Segmentation fault. > >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] > >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> > (gdb) > >> > > >> > Thanks! > >> > Qingyuan > >> > > >> > > >> > > ------------------------------------------------------------------------------ > >> > Come build with us! The BlackBerry® Developer Conference in SF, CA > >> > is the only developer event you need to attend this year. Jumpstart > your > >> > developing skills, take BlackBerry mobile applications to market and > >> > stay > >> > ahead of the curve. Join us from November 9-12, 2009. Register > >> > now! > >> > http://p.sf.net/sfu/devconf > >> > _______________________________________________ > >> > perfmon2-devel mailing list > >> > per...@li... > >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel > >> > > >> > > > > > > |
From: stephane e. <er...@go...> - 2009-09-24 20:18:49
|
What about you try libpfm/examples_v2.x/self. Does it crash too? On Thu, Sep 24, 2009 at 10:13 PM, Qingyuan Deng <dd...@gm...> wrote: > Hi Stephane, > Do you mean mean the i value in "for(i =0; i <pfm_current->pme_count; i++) " > in pfmlib_common.c? > > Then it is 0 while the program stops. > > Thanks! > -------------------------------------------------------------------- > (gdb) b 1899 > Breakpoint 1 at 0x804ead1: file pfmon.c, line 1899. > (gdb) r --help > Starting program: /usr/local/bin/pfmon --help > [Thread debugging using libthread_db enabled] > [New Thread 0xb7de48d0 (LWP 20951)] > [Switching to Thread 0xb7de48d0 (LWP 20951)] > > Breakpoint 1, main (argc=2, argv=0xbf841dc4) at pfmon.c:1900 > 1900 pfmon_initialize(argv); > (gdb) s > pfmon_initialize (argv=0xbf841dc4) at pfmon.c:1387 > 1387 pfmon_get_version(); > (gdb) n > 1389 ret = pfmon_api_probe(); > (gdb) n > 1390 if (ret) { > (gdb) n > 1402 if (options.pfm_version != PERFMON_VERSION_20) > (gdb) n > 1403 options.opt_has_sets = 1; > (gdb) n > 1408 pfmon_arch_initialize(); > (gdb) n > 1410 setup_common_signals(); > (gdb) n > 1413 if (pfm_initialize() != PFMLIB_SUCCESS) > (gdb) n > 1416 pfm_get_version(&version); > (gdb) n > 1417 if (PFM_VERSION_MAJOR(version) < 3 || PFM_VERSION_MINOR(version) > < 2) > (gdb) n > 1421 options.arg_mem_max = pfmon_get_perfmon_arg_mem_max(); > (gdb) n > 1423 ret = pfm_get_pmu_type(&options.pmu_type); > (gdb) n > 1424 if (ret != PFMLIB_SUCCESS) { > (gdb) n > 1428 ret = pfm_get_num_counters(&options.max_counters); > (gdb) n > 1429 if (ret != PFMLIB_SUCCESS) { > (gdb) n > 1433 if (check_forced_generic(argv[0])) { > (gdb) n > 1442 pfmon_detect(); > (gdb) n > 1444 options.session_timeout = PFMON_NO_TIMEOUT; > (gdb) n > 1445 options.interval = PFMON_NO_TIMEOUT; > (gdb) n > 1450 long_val = sysconf(_SC_NPROCESSORS_ONLN); > (gdb) n > 1451 if (long_val == -1) > (gdb) n > 1454 options.online_cpus = long_val; > (gdb) n > 1456 long_val = sysconf(_SC_NPROCESSORS_CONF); > (gdb) n > 1457 if (long_val == -1) > (gdb) n > 1460 options.config_cpus = long_val; > (gdb) n > 1462 pfmon_get_phys_cpu_mask(); > (gdb) n > 1464 clock_getres(CLOCK_MONOTONIC, &ts); > (gdb) n > 1465 options.clock_res = ts.tv_sec * 1000000000 + ts.tv_nsec; > (gdb) n > 1466 options.page_size = getpagesize(); > (gdb) n > 1467 options.cpu_mhz = pfmon_find_cpu_speed(); > (gdb) n > 1469 pfm_get_max_event_name_len(&len); > (gdb) s > pfm_get_max_event_name_len (len=0xbf841cc0) at pfmlib_common.c:907 > 907 if (PFMLIB_INITIALIZED() == 0) > (gdb) n > 909 if (len == NULL) > (gdb) n > 912 for(i=0; i < pfm_current->pme_count; i++) { > (gdb) n > 913 str = pfm_current->get_event_name(i); > (gdb) p i > $1 = 0 > (gdb) n > 914 if (!str) > (gdb) n > 916 l = strlen(str); > (gdb) n > > Program received signal SIGSEGV, Segmentation fault. > 0xb7e5c613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > (gdb) > > > On Thu, Sep 24, 2009 at 4:20 AM, stephane eranian <er...@go...> > wrote: >> >> On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng <dd...@gm...> wrote: >> > I tracked into the program and found the segmentation fault happened at: >> > >> > in pfmon.c >> > pfmon_initialize()->pfm_get_max_event_name_len(&len) >> > >> > then it jumped into pfmlib_common.c >> > >> > pfm_get_max_event_name_len (len=0xbffd9460) at pfmlib_common.c:907 >> > 907 if (PFMLIB_INITIALIZED() == 0) >> > (gdb) n >> > 909 if (len == NULL) >> > (gdb) n >> > 912 for(i=0; i < pfm_current->pme_count; i++) { >> > (gdb) n >> > 913 str = pfm_current->get_event_name(i); >> > (gdb) n >> > 914 if (!str) >> > (gdb) n >> > 916 l = strlen(str); >> > (gdb) n >> > >> > Program received signal SIGSEGV, Segmentation fault. >> > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> > >> > Here is the backtrace: >> > >> > Program received signal SIGSEGV, Segmentation fault. >> > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] >> > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> > (gdb) backtrace >> > #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> > #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) >> > at pfmlib_common.c:916 >> > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at pfmon.c:1469 >> > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at pfmon.c:1900 >> > (gdb) >> >> >> I have seen this problem on an other machine as well. But I don't remember >> what >> the cause was. It has to do with the event table. >> Could you print the value of i (the event index) so we know where it >> stops? >> >> > >> > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian >> > <er...@go...> >> > wrote: >> >> >> >> What does ldd pfmon say? >> >> >> >> >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng <dd...@gm...> >> >> wrote: >> >> > Hello, >> >> > >> >> > I patched the kernel and installed both libpfm and perfmon, however I >> >> > got >> >> > segmentation fault while I tried running command: "pfmon --help'. >> >> > Could >> >> > anyone help me to figure it out please? >> >> > >> >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the latest >> >> > version >> >> > of libpfm, perfmon, and the base system patch from the sourceforge >> >> > page. >> >> > My >> >> > processor is Intel core i7 920 and I adjusted related configuration >> >> > when >> >> > I >> >> > configured the kernel. Following is the debug message from gdb: >> >> > >> >> > >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make install >> >> > [sudo] password for qdeng: >> >> > make[1]: Entering directory >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> >> > make[2]: Entering directory >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> >> > make[2]: Nothing to be done for `all'. >> >> > make[2]: Leaving directory >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o >> >> > pfmon_task.o >> >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o >> >> > pfmon_os.o >> >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o pfmon_gen_ia32.o >> >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o >> >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT >> >> > -I/usr/local/include >> >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG >> >> > -DDATADIR=\"/usr/local/share/pfmon\" >> >> > -I. >> >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g >> >> > smpl_mod/libsmplfmt.a >> >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic -L/usr/local/lib >> >> > -lpfm >> >> > mkdir -p /usr/local/bin >> >> > install -m 755 pfmon /usr/local/bin/pfmon >> >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen >> >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> >> > make[1]: Entering directory >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> >> > mkdir -p /usr/local/bin >> >> > install -m 755 pfdbg /usr/local/bin/pfdbg >> >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> >> > make[1]: Entering directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> >> > mkdir -p /usr/local/share/man/man1 >> >> > install -m 644 pfmon.1 /usr/local/share/man/man1 >> >> > make[1]: Leaving directory `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help >> >> > Segmentation fault >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon >> >> > GNU gdb 6.8-debian >> >> > 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 "i486-linux-gnu"... >> >> > (gdb) run --help >> >> > Starting program: /usr/local/bin/pfmon --help >> >> > [Thread debugging using libthread_db enabled] >> >> > [New Thread 0xb7e598d0 (LWP 4437)] >> >> > >> >> > Program received signal SIGSEGV, Segmentation fault. >> >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] >> >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> > (gdb) >> >> > >> >> > Thanks! >> >> > Qingyuan >> >> > >> >> > >> >> > >> >> > ------------------------------------------------------------------------------ >> >> > Come build with us! The BlackBerry® Developer Conference in SF, >> >> > CA >> >> > is the only developer event you need to attend this year. Jumpstart >> >> > your >> >> > developing skills, take BlackBerry mobile applications to market and >> >> > stay >> >> > ahead of the curve. Join us from November 9-12, 2009. Register >> >> > now! >> >> > http://p.sf.net/sfu/devconf >> >> > _______________________________________________ >> >> > perfmon2-devel mailing list >> >> > per...@li... >> >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel >> >> > >> >> > >> > >> > > > |
From: Qingyuan D. <dd...@gm...> - 2009-09-24 20:21:50
|
Yes. It crashed. qdeng@qdeng-desktop:~/pmu/perfmon2/libpfm-3.9/examples_v2.x$ ./self sycall base 333 major version 2 minor version 82 Segmentation fault On Thu, Sep 24, 2009 at 4:18 PM, stephane eranian <er...@go...>wrote: > What about you try libpfm/examples_v2.x/self. > Does it crash too? > > > On Thu, Sep 24, 2009 at 10:13 PM, Qingyuan Deng <dd...@gm...> wrote: > > Hi Stephane, > > Do you mean mean the i value in "for(i =0; i <pfm_current->pme_count; > i++) " > > in pfmlib_common.c? > > > > Then it is 0 while the program stops. > > > > Thanks! > > -------------------------------------------------------------------- > > (gdb) b 1899 > > Breakpoint 1 at 0x804ead1: file pfmon.c, line 1899. > > (gdb) r --help > > Starting program: /usr/local/bin/pfmon --help > > [Thread debugging using libthread_db enabled] > > [New Thread 0xb7de48d0 (LWP 20951)] > > [Switching to Thread 0xb7de48d0 (LWP 20951)] > > > > Breakpoint 1, main (argc=2, argv=0xbf841dc4) at pfmon.c:1900 > > 1900 pfmon_initialize(argv); > > (gdb) s > > pfmon_initialize (argv=0xbf841dc4) at pfmon.c:1387 > > 1387 pfmon_get_version(); > > (gdb) n > > 1389 ret = pfmon_api_probe(); > > (gdb) n > > 1390 if (ret) { > > (gdb) n > > 1402 if (options.pfm_version != PERFMON_VERSION_20) > > (gdb) n > > 1403 options.opt_has_sets = 1; > > (gdb) n > > 1408 pfmon_arch_initialize(); > > (gdb) n > > 1410 setup_common_signals(); > > (gdb) n > > 1413 if (pfm_initialize() != PFMLIB_SUCCESS) > > (gdb) n > > 1416 pfm_get_version(&version); > > (gdb) n > > 1417 if (PFM_VERSION_MAJOR(version) < 3 || > PFM_VERSION_MINOR(version) > > < 2) > > (gdb) n > > 1421 options.arg_mem_max = pfmon_get_perfmon_arg_mem_max(); > > (gdb) n > > 1423 ret = pfm_get_pmu_type(&options.pmu_type); > > (gdb) n > > 1424 if (ret != PFMLIB_SUCCESS) { > > (gdb) n > > 1428 ret = pfm_get_num_counters(&options.max_counters); > > (gdb) n > > 1429 if (ret != PFMLIB_SUCCESS) { > > (gdb) n > > 1433 if (check_forced_generic(argv[0])) { > > (gdb) n > > 1442 pfmon_detect(); > > (gdb) n > > 1444 options.session_timeout = PFMON_NO_TIMEOUT; > > (gdb) n > > 1445 options.interval = PFMON_NO_TIMEOUT; > > (gdb) n > > 1450 long_val = sysconf(_SC_NPROCESSORS_ONLN); > > (gdb) n > > 1451 if (long_val == -1) > > (gdb) n > > 1454 options.online_cpus = long_val; > > (gdb) n > > 1456 long_val = sysconf(_SC_NPROCESSORS_CONF); > > (gdb) n > > 1457 if (long_val == -1) > > (gdb) n > > 1460 options.config_cpus = long_val; > > (gdb) n > > 1462 pfmon_get_phys_cpu_mask(); > > (gdb) n > > 1464 clock_getres(CLOCK_MONOTONIC, &ts); > > (gdb) n > > 1465 options.clock_res = ts.tv_sec * 1000000000 + ts.tv_nsec; > > (gdb) n > > 1466 options.page_size = getpagesize(); > > (gdb) n > > 1467 options.cpu_mhz = pfmon_find_cpu_speed(); > > (gdb) n > > 1469 pfm_get_max_event_name_len(&len); > > (gdb) s > > pfm_get_max_event_name_len (len=0xbf841cc0) at pfmlib_common.c:907 > > 907 if (PFMLIB_INITIALIZED() == 0) > > (gdb) n > > 909 if (len == NULL) > > (gdb) n > > 912 for(i=0; i < pfm_current->pme_count; i++) { > > (gdb) n > > 913 str = pfm_current->get_event_name(i); > > (gdb) p i > > $1 = 0 > > (gdb) n > > 914 if (!str) > > (gdb) n > > 916 l = strlen(str); > > (gdb) n > > > > Program received signal SIGSEGV, Segmentation fault. > > 0xb7e5c613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > (gdb) > > > > > > On Thu, Sep 24, 2009 at 4:20 AM, stephane eranian < > er...@go...> > > wrote: > >> > >> On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng <dd...@gm...> > wrote: > >> > I tracked into the program and found the segmentation fault happened > at: > >> > > >> > in pfmon.c > >> > pfmon_initialize()->pfm_get_max_event_name_len(&len) > >> > > >> > then it jumped into pfmlib_common.c > >> > > >> > pfm_get_max_event_name_len (len=0xbffd9460) at pfmlib_common.c:907 > >> > 907 if (PFMLIB_INITIALIZED() == 0) > >> > (gdb) n > >> > 909 if (len == NULL) > >> > (gdb) n > >> > 912 for(i=0; i < pfm_current->pme_count; i++) { > >> > (gdb) n > >> > 913 str = pfm_current->get_event_name(i); > >> > (gdb) n > >> > 914 if (!str) > >> > (gdb) n > >> > 916 l = strlen(str); > >> > (gdb) n > >> > > >> > Program received signal SIGSEGV, Segmentation fault. > >> > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> > > >> > Here is the backtrace: > >> > > >> > Program received signal SIGSEGV, Segmentation fault. > >> > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] > >> > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> > (gdb) backtrace > >> > #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> > #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) > >> > at pfmlib_common.c:916 > >> > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at pfmon.c:1469 > >> > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at pfmon.c:1900 > >> > (gdb) > >> > >> > >> I have seen this problem on an other machine as well. But I don't > remember > >> what > >> the cause was. It has to do with the event table. > >> Could you print the value of i (the event index) so we know where it > >> stops? > >> > >> > > >> > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian > >> > <er...@go...> > >> > wrote: > >> >> > >> >> What does ldd pfmon say? > >> >> > >> >> > >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng <dd...@gm...> > >> >> wrote: > >> >> > Hello, > >> >> > > >> >> > I patched the kernel and installed both libpfm and perfmon, however > I > >> >> > got > >> >> > segmentation fault while I tried running command: "pfmon --help'. > >> >> > Could > >> >> > anyone help me to figure it out please? > >> >> > > >> >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the latest > >> >> > version > >> >> > of libpfm, perfmon, and the base system patch from the sourceforge > >> >> > page. > >> >> > My > >> >> > processor is Intel core i7 920 and I adjusted related configuration > >> >> > when > >> >> > I > >> >> > configured the kernel. Following is the debug message from gdb: > >> >> > > >> >> > > >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make install > >> >> > [sudo] password for qdeng: > >> >> > make[1]: Entering directory > >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> >> > make[2]: Entering directory > >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> >> > make[2]: Nothing to be done for `all'. > >> >> > make[2]: Leaving directory > >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o > >> >> > pfmon_task.o > >> >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o > >> >> > pfmon_os.o > >> >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o pfmon_gen_ia32.o > >> >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o > >> >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT > >> >> > -I/usr/local/include > >> >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG > >> >> > -DDATADIR=\"/usr/local/share/pfmon\" > >> >> > -I. > >> >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g > >> >> > smpl_mod/libsmplfmt.a > >> >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic > -L/usr/local/lib > >> >> > -lpfm > >> >> > mkdir -p /usr/local/bin > >> >> > install -m 755 pfmon /usr/local/bin/pfmon > >> >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen > >> >> > make[1]: Leaving directory > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> >> > make[1]: Entering directory > >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> >> > mkdir -p /usr/local/bin > >> >> > install -m 755 pfdbg /usr/local/bin/pfdbg > >> >> > make[1]: Leaving directory > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> >> > make[1]: Entering directory > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> >> > mkdir -p /usr/local/share/man/man1 > >> >> > install -m 644 pfmon.1 /usr/local/share/man/man1 > >> >> > make[1]: Leaving directory > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help > >> >> > Segmentation fault > >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon > >> >> > GNU gdb 6.8-debian > >> >> > 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 "i486-linux-gnu"... > >> >> > (gdb) run --help > >> >> > Starting program: /usr/local/bin/pfmon --help > >> >> > [Thread debugging using libthread_db enabled] > >> >> > [New Thread 0xb7e598d0 (LWP 4437)] > >> >> > > >> >> > Program received signal SIGSEGV, Segmentation fault. > >> >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] > >> >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >> > (gdb) > >> >> > > >> >> > Thanks! > >> >> > Qingyuan > >> >> > > >> >> > > >> >> > > >> >> > > ------------------------------------------------------------------------------ > >> >> > Come build with us! The BlackBerry® Developer Conference in SF, > >> >> > CA > >> >> > is the only developer event you need to attend this year. Jumpstart > >> >> > your > >> >> > developing skills, take BlackBerry mobile applications to market > and > >> >> > stay > >> >> > ahead of the curve. Join us from November 9-12, 2009. Register > >> >> > now! > >> >> > http://p.sf.net/sfu/devconf > >> >> > _______________________________________________ > >> >> > perfmon2-devel mailing list > >> >> > per...@li... > >> >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel > >> >> > > >> >> > > >> > > >> > > > > > > |
From: Qingyuan D. <dd...@gm...> - 2009-09-24 20:23:09
|
Starting program: /home/qdeng/pmu/perfmon2/libpfm-3.9/examples_v2.x/self [Thread debugging using libthread_db enabled] sycall base 333 major version 2 minor version 82 [New Thread 0xb7eb96c0 (LWP 21252)] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xb7eb96c0 (LWP 21252)] 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 (gdb) backtrace #0 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 #1 0x0804a0a1 in pfm_get_max_event_name_len (len=0xbfc9491c) at pfmlib_common.c:916 #2 0x08048d9b in main (argc=1, argv=0xbfc949d4) at self.c:106 (gdb) On Thu, Sep 24, 2009 at 4:18 PM, stephane eranian <er...@go...>wrote: > What about you try libpfm/examples_v2.x/self. > Does it crash too? > > > On Thu, Sep 24, 2009 at 10:13 PM, Qingyuan Deng <dd...@gm...> wrote: > > Hi Stephane, > > Do you mean mean the i value in "for(i =0; i <pfm_current->pme_count; > i++) " > > in pfmlib_common.c? > > > > Then it is 0 while the program stops. > > > > Thanks! > > -------------------------------------------------------------------- > > (gdb) b 1899 > > Breakpoint 1 at 0x804ead1: file pfmon.c, line 1899. > > (gdb) r --help > > Starting program: /usr/local/bin/pfmon --help > > [Thread debugging using libthread_db enabled] > > [New Thread 0xb7de48d0 (LWP 20951)] > > [Switching to Thread 0xb7de48d0 (LWP 20951)] > > > > Breakpoint 1, main (argc=2, argv=0xbf841dc4) at pfmon.c:1900 > > 1900 pfmon_initialize(argv); > > (gdb) s > > pfmon_initialize (argv=0xbf841dc4) at pfmon.c:1387 > > 1387 pfmon_get_version(); > > (gdb) n > > 1389 ret = pfmon_api_probe(); > > (gdb) n > > 1390 if (ret) { > > (gdb) n > > 1402 if (options.pfm_version != PERFMON_VERSION_20) > > (gdb) n > > 1403 options.opt_has_sets = 1; > > (gdb) n > > 1408 pfmon_arch_initialize(); > > (gdb) n > > 1410 setup_common_signals(); > > (gdb) n > > 1413 if (pfm_initialize() != PFMLIB_SUCCESS) > > (gdb) n > > 1416 pfm_get_version(&version); > > (gdb) n > > 1417 if (PFM_VERSION_MAJOR(version) < 3 || > PFM_VERSION_MINOR(version) > > < 2) > > (gdb) n > > 1421 options.arg_mem_max = pfmon_get_perfmon_arg_mem_max(); > > (gdb) n > > 1423 ret = pfm_get_pmu_type(&options.pmu_type); > > (gdb) n > > 1424 if (ret != PFMLIB_SUCCESS) { > > (gdb) n > > 1428 ret = pfm_get_num_counters(&options.max_counters); > > (gdb) n > > 1429 if (ret != PFMLIB_SUCCESS) { > > (gdb) n > > 1433 if (check_forced_generic(argv[0])) { > > (gdb) n > > 1442 pfmon_detect(); > > (gdb) n > > 1444 options.session_timeout = PFMON_NO_TIMEOUT; > > (gdb) n > > 1445 options.interval = PFMON_NO_TIMEOUT; > > (gdb) n > > 1450 long_val = sysconf(_SC_NPROCESSORS_ONLN); > > (gdb) n > > 1451 if (long_val == -1) > > (gdb) n > > 1454 options.online_cpus = long_val; > > (gdb) n > > 1456 long_val = sysconf(_SC_NPROCESSORS_CONF); > > (gdb) n > > 1457 if (long_val == -1) > > (gdb) n > > 1460 options.config_cpus = long_val; > > (gdb) n > > 1462 pfmon_get_phys_cpu_mask(); > > (gdb) n > > 1464 clock_getres(CLOCK_MONOTONIC, &ts); > > (gdb) n > > 1465 options.clock_res = ts.tv_sec * 1000000000 + ts.tv_nsec; > > (gdb) n > > 1466 options.page_size = getpagesize(); > > (gdb) n > > 1467 options.cpu_mhz = pfmon_find_cpu_speed(); > > (gdb) n > > 1469 pfm_get_max_event_name_len(&len); > > (gdb) s > > pfm_get_max_event_name_len (len=0xbf841cc0) at pfmlib_common.c:907 > > 907 if (PFMLIB_INITIALIZED() == 0) > > (gdb) n > > 909 if (len == NULL) > > (gdb) n > > 912 for(i=0; i < pfm_current->pme_count; i++) { > > (gdb) n > > 913 str = pfm_current->get_event_name(i); > > (gdb) p i > > $1 = 0 > > (gdb) n > > 914 if (!str) > > (gdb) n > > 916 l = strlen(str); > > (gdb) n > > > > Program received signal SIGSEGV, Segmentation fault. > > 0xb7e5c613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > (gdb) > > > > > > On Thu, Sep 24, 2009 at 4:20 AM, stephane eranian < > er...@go...> > > wrote: > >> > >> On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng <dd...@gm...> > wrote: > >> > I tracked into the program and found the segmentation fault happened > at: > >> > > >> > in pfmon.c > >> > pfmon_initialize()->pfm_get_max_event_name_len(&len) > >> > > >> > then it jumped into pfmlib_common.c > >> > > >> > pfm_get_max_event_name_len (len=0xbffd9460) at pfmlib_common.c:907 > >> > 907 if (PFMLIB_INITIALIZED() == 0) > >> > (gdb) n > >> > 909 if (len == NULL) > >> > (gdb) n > >> > 912 for(i=0; i < pfm_current->pme_count; i++) { > >> > (gdb) n > >> > 913 str = pfm_current->get_event_name(i); > >> > (gdb) n > >> > 914 if (!str) > >> > (gdb) n > >> > 916 l = strlen(str); > >> > (gdb) n > >> > > >> > Program received signal SIGSEGV, Segmentation fault. > >> > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> > > >> > Here is the backtrace: > >> > > >> > Program received signal SIGSEGV, Segmentation fault. > >> > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] > >> > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> > (gdb) backtrace > >> > #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> > #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) > >> > at pfmlib_common.c:916 > >> > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at pfmon.c:1469 > >> > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at pfmon.c:1900 > >> > (gdb) > >> > >> > >> I have seen this problem on an other machine as well. But I don't > remember > >> what > >> the cause was. It has to do with the event table. > >> Could you print the value of i (the event index) so we know where it > >> stops? > >> > >> > > >> > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian > >> > <er...@go...> > >> > wrote: > >> >> > >> >> What does ldd pfmon say? > >> >> > >> >> > >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng <dd...@gm...> > >> >> wrote: > >> >> > Hello, > >> >> > > >> >> > I patched the kernel and installed both libpfm and perfmon, however > I > >> >> > got > >> >> > segmentation fault while I tried running command: "pfmon --help'. > >> >> > Could > >> >> > anyone help me to figure it out please? > >> >> > > >> >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the latest > >> >> > version > >> >> > of libpfm, perfmon, and the base system patch from the sourceforge > >> >> > page. > >> >> > My > >> >> > processor is Intel core i7 920 and I adjusted related configuration > >> >> > when > >> >> > I > >> >> > configured the kernel. Following is the debug message from gdb: > >> >> > > >> >> > > >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make install > >> >> > [sudo] password for qdeng: > >> >> > make[1]: Entering directory > >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> >> > make[2]: Entering directory > >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> >> > make[2]: Nothing to be done for `all'. > >> >> > make[2]: Leaving directory > >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o > >> >> > pfmon_task.o > >> >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o > >> >> > pfmon_os.o > >> >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o pfmon_gen_ia32.o > >> >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o > >> >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT > >> >> > -I/usr/local/include > >> >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG > >> >> > -DDATADIR=\"/usr/local/share/pfmon\" > >> >> > -I. > >> >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g > >> >> > smpl_mod/libsmplfmt.a > >> >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic > -L/usr/local/lib > >> >> > -lpfm > >> >> > mkdir -p /usr/local/bin > >> >> > install -m 755 pfmon /usr/local/bin/pfmon > >> >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen > >> >> > make[1]: Leaving directory > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> >> > make[1]: Entering directory > >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> >> > mkdir -p /usr/local/bin > >> >> > install -m 755 pfdbg /usr/local/bin/pfdbg > >> >> > make[1]: Leaving directory > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> >> > make[1]: Entering directory > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> >> > mkdir -p /usr/local/share/man/man1 > >> >> > install -m 644 pfmon.1 /usr/local/share/man/man1 > >> >> > make[1]: Leaving directory > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help > >> >> > Segmentation fault > >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon > >> >> > GNU gdb 6.8-debian > >> >> > 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 "i486-linux-gnu"... > >> >> > (gdb) run --help > >> >> > Starting program: /usr/local/bin/pfmon --help > >> >> > [Thread debugging using libthread_db enabled] > >> >> > [New Thread 0xb7e598d0 (LWP 4437)] > >> >> > > >> >> > Program received signal SIGSEGV, Segmentation fault. > >> >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] > >> >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >> > (gdb) > >> >> > > >> >> > Thanks! > >> >> > Qingyuan > >> >> > > >> >> > > >> >> > > >> >> > > ------------------------------------------------------------------------------ > >> >> > Come build with us! The BlackBerry® Developer Conference in SF, > >> >> > CA > >> >> > is the only developer event you need to attend this year. Jumpstart > >> >> > your > >> >> > developing skills, take BlackBerry mobile applications to market > and > >> >> > stay > >> >> > ahead of the curve. Join us from November 9-12, 2009. Register > >> >> > now! > >> >> > http://p.sf.net/sfu/devconf > >> >> > _______________________________________________ > >> >> > perfmon2-devel mailing list > >> >> > per...@li... > >> >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel > >> >> > > >> >> > > >> > > >> > > > > > > |
From: stephane e. <er...@go...> - 2009-09-24 20:54:13
|
What is you try to compile libpfm with OPTIM=-O0? On Thu, Sep 24, 2009 at 10:22 PM, Qingyuan Deng <dd...@gm...> wrote: > Starting program: /home/qdeng/pmu/perfmon2/libpfm-3.9/examples_v2.x/self > [Thread debugging using libthread_db enabled] > sycall base 333 > major version 2 > minor version 82 > [New Thread 0xb7eb96c0 (LWP 21252)] > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread 0xb7eb96c0 (LWP 21252)] > 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > (gdb) backtrace > #0 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > #1 0x0804a0a1 in pfm_get_max_event_name_len (len=0xbfc9491c) > at pfmlib_common.c:916 > #2 0x08048d9b in main (argc=1, argv=0xbfc949d4) at self.c:106 > (gdb) > > > On Thu, Sep 24, 2009 at 4:18 PM, stephane eranian <er...@go...> > wrote: >> >> What about you try libpfm/examples_v2.x/self. >> Does it crash too? >> >> >> On Thu, Sep 24, 2009 at 10:13 PM, Qingyuan Deng <dd...@gm...> wrote: >> > Hi Stephane, >> > Do you mean mean the i value in "for(i =0; i <pfm_current->pme_count; >> > i++) " >> > in pfmlib_common.c? >> > >> > Then it is 0 while the program stops. >> > >> > Thanks! >> > -------------------------------------------------------------------- >> > (gdb) b 1899 >> > Breakpoint 1 at 0x804ead1: file pfmon.c, line 1899. >> > (gdb) r --help >> > Starting program: /usr/local/bin/pfmon --help >> > [Thread debugging using libthread_db enabled] >> > [New Thread 0xb7de48d0 (LWP 20951)] >> > [Switching to Thread 0xb7de48d0 (LWP 20951)] >> > >> > Breakpoint 1, main (argc=2, argv=0xbf841dc4) at pfmon.c:1900 >> > 1900 pfmon_initialize(argv); >> > (gdb) s >> > pfmon_initialize (argv=0xbf841dc4) at pfmon.c:1387 >> > 1387 pfmon_get_version(); >> > (gdb) n >> > 1389 ret = pfmon_api_probe(); >> > (gdb) n >> > 1390 if (ret) { >> > (gdb) n >> > 1402 if (options.pfm_version != PERFMON_VERSION_20) >> > (gdb) n >> > 1403 options.opt_has_sets = 1; >> > (gdb) n >> > 1408 pfmon_arch_initialize(); >> > (gdb) n >> > 1410 setup_common_signals(); >> > (gdb) n >> > 1413 if (pfm_initialize() != PFMLIB_SUCCESS) >> > (gdb) n >> > 1416 pfm_get_version(&version); >> > (gdb) n >> > 1417 if (PFM_VERSION_MAJOR(version) < 3 || >> > PFM_VERSION_MINOR(version) >> > < 2) >> > (gdb) n >> > 1421 options.arg_mem_max = pfmon_get_perfmon_arg_mem_max(); >> > (gdb) n >> > 1423 ret = pfm_get_pmu_type(&options.pmu_type); >> > (gdb) n >> > 1424 if (ret != PFMLIB_SUCCESS) { >> > (gdb) n >> > 1428 ret = pfm_get_num_counters(&options.max_counters); >> > (gdb) n >> > 1429 if (ret != PFMLIB_SUCCESS) { >> > (gdb) n >> > 1433 if (check_forced_generic(argv[0])) { >> > (gdb) n >> > 1442 pfmon_detect(); >> > (gdb) n >> > 1444 options.session_timeout = PFMON_NO_TIMEOUT; >> > (gdb) n >> > 1445 options.interval = PFMON_NO_TIMEOUT; >> > (gdb) n >> > 1450 long_val = sysconf(_SC_NPROCESSORS_ONLN); >> > (gdb) n >> > 1451 if (long_val == -1) >> > (gdb) n >> > 1454 options.online_cpus = long_val; >> > (gdb) n >> > 1456 long_val = sysconf(_SC_NPROCESSORS_CONF); >> > (gdb) n >> > 1457 if (long_val == -1) >> > (gdb) n >> > 1460 options.config_cpus = long_val; >> > (gdb) n >> > 1462 pfmon_get_phys_cpu_mask(); >> > (gdb) n >> > 1464 clock_getres(CLOCK_MONOTONIC, &ts); >> > (gdb) n >> > 1465 options.clock_res = ts.tv_sec * 1000000000 + ts.tv_nsec; >> > (gdb) n >> > 1466 options.page_size = getpagesize(); >> > (gdb) n >> > 1467 options.cpu_mhz = pfmon_find_cpu_speed(); >> > (gdb) n >> > 1469 pfm_get_max_event_name_len(&len); >> > (gdb) s >> > pfm_get_max_event_name_len (len=0xbf841cc0) at pfmlib_common.c:907 >> > 907 if (PFMLIB_INITIALIZED() == 0) >> > (gdb) n >> > 909 if (len == NULL) >> > (gdb) n >> > 912 for(i=0; i < pfm_current->pme_count; i++) { >> > (gdb) n >> > 913 str = pfm_current->get_event_name(i); >> > (gdb) p i >> > $1 = 0 >> > (gdb) n >> > 914 if (!str) >> > (gdb) n >> > 916 l = strlen(str); >> > (gdb) n >> > >> > Program received signal SIGSEGV, Segmentation fault. >> > 0xb7e5c613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> > (gdb) >> > >> > >> > On Thu, Sep 24, 2009 at 4:20 AM, stephane eranian >> > <er...@go...> >> > wrote: >> >> >> >> On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng <dd...@gm...> >> >> wrote: >> >> > I tracked into the program and found the segmentation fault happened >> >> > at: >> >> > >> >> > in pfmon.c >> >> > pfmon_initialize()->pfm_get_max_event_name_len(&len) >> >> > >> >> > then it jumped into pfmlib_common.c >> >> > >> >> > pfm_get_max_event_name_len (len=0xbffd9460) at pfmlib_common.c:907 >> >> > 907 if (PFMLIB_INITIALIZED() == 0) >> >> > (gdb) n >> >> > 909 if (len == NULL) >> >> > (gdb) n >> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { >> >> > (gdb) n >> >> > 913 str = pfm_current->get_event_name(i); >> >> > (gdb) n >> >> > 914 if (!str) >> >> > (gdb) n >> >> > 916 l = strlen(str); >> >> > (gdb) n >> >> > >> >> > Program received signal SIGSEGV, Segmentation fault. >> >> > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> > >> >> > Here is the backtrace: >> >> > >> >> > Program received signal SIGSEGV, Segmentation fault. >> >> > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] >> >> > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> > (gdb) backtrace >> >> > #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> > #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) >> >> > at pfmlib_common.c:916 >> >> > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at pfmon.c:1469 >> >> > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at pfmon.c:1900 >> >> > (gdb) >> >> >> >> >> >> I have seen this problem on an other machine as well. But I don't >> >> remember >> >> what >> >> the cause was. It has to do with the event table. >> >> Could you print the value of i (the event index) so we know where it >> >> stops? >> >> >> >> > >> >> > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian >> >> > <er...@go...> >> >> > wrote: >> >> >> >> >> >> What does ldd pfmon say? >> >> >> >> >> >> >> >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng <dd...@gm...> >> >> >> wrote: >> >> >> > Hello, >> >> >> > >> >> >> > I patched the kernel and installed both libpfm and perfmon, >> >> >> > however I >> >> >> > got >> >> >> > segmentation fault while I tried running command: "pfmon --help'. >> >> >> > Could >> >> >> > anyone help me to figure it out please? >> >> >> > >> >> >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the latest >> >> >> > version >> >> >> > of libpfm, perfmon, and the base system patch from the sourceforge >> >> >> > page. >> >> >> > My >> >> >> > processor is Intel core i7 920 and I adjusted related >> >> >> > configuration >> >> >> > when >> >> >> > I >> >> >> > configured the kernel. Following is the debug message from gdb: >> >> >> > >> >> >> > >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make install >> >> >> > [sudo] password for qdeng: >> >> >> > make[1]: Entering directory >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> >> >> > make[2]: Entering directory >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> >> >> > make[2]: Nothing to be done for `all'. >> >> >> > make[2]: Leaving directory >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> >> >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o >> >> >> > pfmon_task.o >> >> >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o >> >> >> > pfmon_os.o >> >> >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o pfmon_gen_ia32.o >> >> >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o >> >> >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT >> >> >> > -I/usr/local/include >> >> >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG >> >> >> > -DDATADIR=\"/usr/local/share/pfmon\" >> >> >> > -I. >> >> >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g >> >> >> > smpl_mod/libsmplfmt.a >> >> >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic >> >> >> > -L/usr/local/lib >> >> >> > -lpfm >> >> >> > mkdir -p /usr/local/bin >> >> >> > install -m 755 pfmon /usr/local/bin/pfmon >> >> >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen >> >> >> > make[1]: Leaving directory >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> >> >> > make[1]: Entering directory >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> >> >> > mkdir -p /usr/local/bin >> >> >> > install -m 755 pfdbg /usr/local/bin/pfdbg >> >> >> > make[1]: Leaving directory >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> >> >> > make[1]: Entering directory >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> >> >> > mkdir -p /usr/local/share/man/man1 >> >> >> > install -m 644 pfmon.1 /usr/local/share/man/man1 >> >> >> > make[1]: Leaving directory >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help >> >> >> > Segmentation fault >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon >> >> >> > GNU gdb 6.8-debian >> >> >> > 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 "i486-linux-gnu"... >> >> >> > (gdb) run --help >> >> >> > Starting program: /usr/local/bin/pfmon --help >> >> >> > [Thread debugging using libthread_db enabled] >> >> >> > [New Thread 0xb7e598d0 (LWP 4437)] >> >> >> > >> >> >> > Program received signal SIGSEGV, Segmentation fault. >> >> >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] >> >> >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> >> > (gdb) >> >> >> > >> >> >> > Thanks! >> >> >> > Qingyuan >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> > ------------------------------------------------------------------------------ >> >> >> > Come build with us! The BlackBerry® Developer Conference in >> >> >> > SF, >> >> >> > CA >> >> >> > is the only developer event you need to attend this year. >> >> >> > Jumpstart >> >> >> > your >> >> >> > developing skills, take BlackBerry mobile applications to market >> >> >> > and >> >> >> > stay >> >> >> > ahead of the curve. Join us from November 9-12, 2009. Register >> >> >> > now! >> >> >> > http://p.sf.net/sfu/devconf >> >> >> > _______________________________________________ >> >> >> > perfmon2-devel mailing list >> >> >> > per...@li... >> >> >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel >> >> >> > >> >> >> > >> >> > >> >> > >> > >> > > > |
From: Qingyuan D. <dd...@gm...> - 2009-09-24 21:09:10
|
I thought I compile it as the default configuration file you put there which is "O2"... OK, I am trying to re-compile it with O0. On Thu, Sep 24, 2009 at 4:54 PM, stephane eranian <er...@go...>wrote: > What is you try to compile libpfm with OPTIM=-O0? > > > On Thu, Sep 24, 2009 at 10:22 PM, Qingyuan Deng <dd...@gm...> wrote: > > Starting program: /home/qdeng/pmu/perfmon2/libpfm-3.9/examples_v2.x/self > > [Thread debugging using libthread_db enabled] > > sycall base 333 > > major version 2 > > minor version 82 > > [New Thread 0xb7eb96c0 (LWP 21252)] > > > > Program received signal SIGSEGV, Segmentation fault. > > [Switching to Thread 0xb7eb96c0 (LWP 21252)] > > 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > (gdb) backtrace > > #0 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > > #1 0x0804a0a1 in pfm_get_max_event_name_len (len=0xbfc9491c) > > at pfmlib_common.c:916 > > #2 0x08048d9b in main (argc=1, argv=0xbfc949d4) at self.c:106 > > (gdb) > > > > > > On Thu, Sep 24, 2009 at 4:18 PM, stephane eranian < > er...@go...> > > wrote: > >> > >> What about you try libpfm/examples_v2.x/self. > >> Does it crash too? > >> > >> > >> On Thu, Sep 24, 2009 at 10:13 PM, Qingyuan Deng <dd...@gm...> > wrote: > >> > Hi Stephane, > >> > Do you mean mean the i value in "for(i =0; i <pfm_current->pme_count; > >> > i++) " > >> > in pfmlib_common.c? > >> > > >> > Then it is 0 while the program stops. > >> > > >> > Thanks! > >> > -------------------------------------------------------------------- > >> > (gdb) b 1899 > >> > Breakpoint 1 at 0x804ead1: file pfmon.c, line 1899. > >> > (gdb) r --help > >> > Starting program: /usr/local/bin/pfmon --help > >> > [Thread debugging using libthread_db enabled] > >> > [New Thread 0xb7de48d0 (LWP 20951)] > >> > [Switching to Thread 0xb7de48d0 (LWP 20951)] > >> > > >> > Breakpoint 1, main (argc=2, argv=0xbf841dc4) at pfmon.c:1900 > >> > 1900 pfmon_initialize(argv); > >> > (gdb) s > >> > pfmon_initialize (argv=0xbf841dc4) at pfmon.c:1387 > >> > 1387 pfmon_get_version(); > >> > (gdb) n > >> > 1389 ret = pfmon_api_probe(); > >> > (gdb) n > >> > 1390 if (ret) { > >> > (gdb) n > >> > 1402 if (options.pfm_version != PERFMON_VERSION_20) > >> > (gdb) n > >> > 1403 options.opt_has_sets = 1; > >> > (gdb) n > >> > 1408 pfmon_arch_initialize(); > >> > (gdb) n > >> > 1410 setup_common_signals(); > >> > (gdb) n > >> > 1413 if (pfm_initialize() != PFMLIB_SUCCESS) > >> > (gdb) n > >> > 1416 pfm_get_version(&version); > >> > (gdb) n > >> > 1417 if (PFM_VERSION_MAJOR(version) < 3 || > >> > PFM_VERSION_MINOR(version) > >> > < 2) > >> > (gdb) n > >> > 1421 options.arg_mem_max = pfmon_get_perfmon_arg_mem_max(); > >> > (gdb) n > >> > 1423 ret = pfm_get_pmu_type(&options.pmu_type); > >> > (gdb) n > >> > 1424 if (ret != PFMLIB_SUCCESS) { > >> > (gdb) n > >> > 1428 ret = pfm_get_num_counters(&options.max_counters); > >> > (gdb) n > >> > 1429 if (ret != PFMLIB_SUCCESS) { > >> > (gdb) n > >> > 1433 if (check_forced_generic(argv[0])) { > >> > (gdb) n > >> > 1442 pfmon_detect(); > >> > (gdb) n > >> > 1444 options.session_timeout = PFMON_NO_TIMEOUT; > >> > (gdb) n > >> > 1445 options.interval = PFMON_NO_TIMEOUT; > >> > (gdb) n > >> > 1450 long_val = sysconf(_SC_NPROCESSORS_ONLN); > >> > (gdb) n > >> > 1451 if (long_val == -1) > >> > (gdb) n > >> > 1454 options.online_cpus = long_val; > >> > (gdb) n > >> > 1456 long_val = sysconf(_SC_NPROCESSORS_CONF); > >> > (gdb) n > >> > 1457 if (long_val == -1) > >> > (gdb) n > >> > 1460 options.config_cpus = long_val; > >> > (gdb) n > >> > 1462 pfmon_get_phys_cpu_mask(); > >> > (gdb) n > >> > 1464 clock_getres(CLOCK_MONOTONIC, &ts); > >> > (gdb) n > >> > 1465 options.clock_res = ts.tv_sec * 1000000000 + ts.tv_nsec; > >> > (gdb) n > >> > 1466 options.page_size = getpagesize(); > >> > (gdb) n > >> > 1467 options.cpu_mhz = pfmon_find_cpu_speed(); > >> > (gdb) n > >> > 1469 pfm_get_max_event_name_len(&len); > >> > (gdb) s > >> > pfm_get_max_event_name_len (len=0xbf841cc0) at pfmlib_common.c:907 > >> > 907 if (PFMLIB_INITIALIZED() == 0) > >> > (gdb) n > >> > 909 if (len == NULL) > >> > (gdb) n > >> > 912 for(i=0; i < pfm_current->pme_count; i++) { > >> > (gdb) n > >> > 913 str = pfm_current->get_event_name(i); > >> > (gdb) p i > >> > $1 = 0 > >> > (gdb) n > >> > 914 if (!str) > >> > (gdb) n > >> > 916 l = strlen(str); > >> > (gdb) n > >> > > >> > Program received signal SIGSEGV, Segmentation fault. > >> > 0xb7e5c613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> > (gdb) > >> > > >> > > >> > On Thu, Sep 24, 2009 at 4:20 AM, stephane eranian > >> > <er...@go...> > >> > wrote: > >> >> > >> >> On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng <dd...@gm...> > >> >> wrote: > >> >> > I tracked into the program and found the segmentation fault > happened > >> >> > at: > >> >> > > >> >> > in pfmon.c > >> >> > pfmon_initialize()->pfm_get_max_event_name_len(&len) > >> >> > > >> >> > then it jumped into pfmlib_common.c > >> >> > > >> >> > pfm_get_max_event_name_len (len=0xbffd9460) at pfmlib_common.c:907 > >> >> > 907 if (PFMLIB_INITIALIZED() == 0) > >> >> > (gdb) n > >> >> > 909 if (len == NULL) > >> >> > (gdb) n > >> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { > >> >> > (gdb) n > >> >> > 913 str = pfm_current->get_event_name(i); > >> >> > (gdb) n > >> >> > 914 if (!str) > >> >> > (gdb) n > >> >> > 916 l = strlen(str); > >> >> > (gdb) n > >> >> > > >> >> > Program received signal SIGSEGV, Segmentation fault. > >> >> > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >> > > >> >> > Here is the backtrace: > >> >> > > >> >> > Program received signal SIGSEGV, Segmentation fault. > >> >> > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] > >> >> > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >> > (gdb) backtrace > >> >> > #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >> > #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) > >> >> > at pfmlib_common.c:916 > >> >> > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at > pfmon.c:1469 > >> >> > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at pfmon.c:1900 > >> >> > (gdb) > >> >> > >> >> > >> >> I have seen this problem on an other machine as well. But I don't > >> >> remember > >> >> what > >> >> the cause was. It has to do with the event table. > >> >> Could you print the value of i (the event index) so we know where it > >> >> stops? > >> >> > >> >> > > >> >> > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian > >> >> > <er...@go...> > >> >> > wrote: > >> >> >> > >> >> >> What does ldd pfmon say? > >> >> >> > >> >> >> > >> >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng <dd...@gm...> > >> >> >> wrote: > >> >> >> > Hello, > >> >> >> > > >> >> >> > I patched the kernel and installed both libpfm and perfmon, > >> >> >> > however I > >> >> >> > got > >> >> >> > segmentation fault while I tried running command: "pfmon > --help'. > >> >> >> > Could > >> >> >> > anyone help me to figure it out please? > >> >> >> > > >> >> >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the > latest > >> >> >> > version > >> >> >> > of libpfm, perfmon, and the base system patch from the > sourceforge > >> >> >> > page. > >> >> >> > My > >> >> >> > processor is Intel core i7 920 and I adjusted related > >> >> >> > configuration > >> >> >> > when > >> >> >> > I > >> >> >> > configured the kernel. Following is the debug message from gdb: > >> >> >> > > >> >> >> > > >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make install > >> >> >> > [sudo] password for qdeng: > >> >> >> > make[1]: Entering directory > >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> >> >> > make[2]: Entering directory > >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> >> >> > make[2]: Nothing to be done for `all'. > >> >> >> > make[2]: Leaving directory > >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> >> >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o > >> >> >> > pfmon_task.o > >> >> >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o > >> >> >> > pfmon_os.o > >> >> >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o pfmon_gen_ia32.o > >> >> >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o > >> >> >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT > >> >> >> > -I/usr/local/include > >> >> >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG > >> >> >> > -DDATADIR=\"/usr/local/share/pfmon\" > >> >> >> > -I. > >> >> >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g > >> >> >> > smpl_mod/libsmplfmt.a > >> >> >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic > >> >> >> > -L/usr/local/lib > >> >> >> > -lpfm > >> >> >> > mkdir -p /usr/local/bin > >> >> >> > install -m 755 pfmon /usr/local/bin/pfmon > >> >> >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen > >> >> >> > make[1]: Leaving directory > >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> >> >> > make[1]: Entering directory > >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> >> >> > mkdir -p /usr/local/bin > >> >> >> > install -m 755 pfdbg /usr/local/bin/pfdbg > >> >> >> > make[1]: Leaving directory > >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> >> >> > make[1]: Entering directory > >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> >> >> > mkdir -p /usr/local/share/man/man1 > >> >> >> > install -m 644 pfmon.1 /usr/local/share/man/man1 > >> >> >> > make[1]: Leaving directory > >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help > >> >> >> > Segmentation fault > >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon > >> >> >> > GNU gdb 6.8-debian > >> >> >> > 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 "i486-linux-gnu"... > >> >> >> > (gdb) run --help > >> >> >> > Starting program: /usr/local/bin/pfmon --help > >> >> >> > [Thread debugging using libthread_db enabled] > >> >> >> > [New Thread 0xb7e598d0 (LWP 4437)] > >> >> >> > > >> >> >> > Program received signal SIGSEGV, Segmentation fault. > >> >> >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] > >> >> >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >> >> > (gdb) > >> >> >> > > >> >> >> > Thanks! > >> >> >> > Qingyuan > >> >> >> > > >> >> >> > > >> >> >> > > >> >> >> > > >> >> >> > > ------------------------------------------------------------------------------ > >> >> >> > Come build with us! The BlackBerry® Developer Conference in > >> >> >> > SF, > >> >> >> > CA > >> >> >> > is the only developer event you need to attend this year. > >> >> >> > Jumpstart > >> >> >> > your > >> >> >> > developing skills, take BlackBerry mobile applications to market > >> >> >> > and > >> >> >> > stay > >> >> >> > ahead of the curve. Join us from November 9-12, 2009. > Register > >> >> >> > now! > >> >> >> > http://p.sf.net/sfu/devconf > >> >> >> > _______________________________________________ > >> >> >> > perfmon2-devel mailing list > >> >> >> > per...@li... > >> >> >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel > >> >> >> > > >> >> >> > > >> >> > > >> >> > > >> > > >> > > > > > > |
From: Qingyuan D. <dd...@gm...> - 2009-09-24 21:14:54
|
No, it doesn't work either. Exactly the same problem. Do you think it is due to the compiler? I am using gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3 Thank you! On Thu, Sep 24, 2009 at 5:08 PM, Qingyuan Deng <dd...@gm...> wrote: > I thought I compile it as the default configuration file you put there > which is "O2"... OK, I am trying to re-compile it with O0. > > > > On Thu, Sep 24, 2009 at 4:54 PM, stephane eranian <er...@go...>wrote: > >> What is you try to compile libpfm with OPTIM=-O0? >> >> >> On Thu, Sep 24, 2009 at 10:22 PM, Qingyuan Deng <dd...@gm...> wrote: >> > Starting program: /home/qdeng/pmu/perfmon2/libpfm-3.9/examples_v2.x/self >> > [Thread debugging using libthread_db enabled] >> > sycall base 333 >> > major version 2 >> > minor version 82 >> > [New Thread 0xb7eb96c0 (LWP 21252)] >> > >> > Program received signal SIGSEGV, Segmentation fault. >> > [Switching to Thread 0xb7eb96c0 (LWP 21252)] >> > 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> > (gdb) backtrace >> > #0 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> > #1 0x0804a0a1 in pfm_get_max_event_name_len (len=0xbfc9491c) >> > at pfmlib_common.c:916 >> > #2 0x08048d9b in main (argc=1, argv=0xbfc949d4) at self.c:106 >> > (gdb) >> > >> > >> > On Thu, Sep 24, 2009 at 4:18 PM, stephane eranian < >> er...@go...> >> > wrote: >> >> >> >> What about you try libpfm/examples_v2.x/self. >> >> Does it crash too? >> >> >> >> >> >> On Thu, Sep 24, 2009 at 10:13 PM, Qingyuan Deng <dd...@gm...> >> wrote: >> >> > Hi Stephane, >> >> > Do you mean mean the i value in "for(i =0; i <pfm_current->pme_count; >> >> > i++) " >> >> > in pfmlib_common.c? >> >> > >> >> > Then it is 0 while the program stops. >> >> > >> >> > Thanks! >> >> > -------------------------------------------------------------------- >> >> > (gdb) b 1899 >> >> > Breakpoint 1 at 0x804ead1: file pfmon.c, line 1899. >> >> > (gdb) r --help >> >> > Starting program: /usr/local/bin/pfmon --help >> >> > [Thread debugging using libthread_db enabled] >> >> > [New Thread 0xb7de48d0 (LWP 20951)] >> >> > [Switching to Thread 0xb7de48d0 (LWP 20951)] >> >> > >> >> > Breakpoint 1, main (argc=2, argv=0xbf841dc4) at pfmon.c:1900 >> >> > 1900 pfmon_initialize(argv); >> >> > (gdb) s >> >> > pfmon_initialize (argv=0xbf841dc4) at pfmon.c:1387 >> >> > 1387 pfmon_get_version(); >> >> > (gdb) n >> >> > 1389 ret = pfmon_api_probe(); >> >> > (gdb) n >> >> > 1390 if (ret) { >> >> > (gdb) n >> >> > 1402 if (options.pfm_version != PERFMON_VERSION_20) >> >> > (gdb) n >> >> > 1403 options.opt_has_sets = 1; >> >> > (gdb) n >> >> > 1408 pfmon_arch_initialize(); >> >> > (gdb) n >> >> > 1410 setup_common_signals(); >> >> > (gdb) n >> >> > 1413 if (pfm_initialize() != PFMLIB_SUCCESS) >> >> > (gdb) n >> >> > 1416 pfm_get_version(&version); >> >> > (gdb) n >> >> > 1417 if (PFM_VERSION_MAJOR(version) < 3 || >> >> > PFM_VERSION_MINOR(version) >> >> > < 2) >> >> > (gdb) n >> >> > 1421 options.arg_mem_max = pfmon_get_perfmon_arg_mem_max(); >> >> > (gdb) n >> >> > 1423 ret = pfm_get_pmu_type(&options.pmu_type); >> >> > (gdb) n >> >> > 1424 if (ret != PFMLIB_SUCCESS) { >> >> > (gdb) n >> >> > 1428 ret = pfm_get_num_counters(&options.max_counters); >> >> > (gdb) n >> >> > 1429 if (ret != PFMLIB_SUCCESS) { >> >> > (gdb) n >> >> > 1433 if (check_forced_generic(argv[0])) { >> >> > (gdb) n >> >> > 1442 pfmon_detect(); >> >> > (gdb) n >> >> > 1444 options.session_timeout = PFMON_NO_TIMEOUT; >> >> > (gdb) n >> >> > 1445 options.interval = PFMON_NO_TIMEOUT; >> >> > (gdb) n >> >> > 1450 long_val = sysconf(_SC_NPROCESSORS_ONLN); >> >> > (gdb) n >> >> > 1451 if (long_val == -1) >> >> > (gdb) n >> >> > 1454 options.online_cpus = long_val; >> >> > (gdb) n >> >> > 1456 long_val = sysconf(_SC_NPROCESSORS_CONF); >> >> > (gdb) n >> >> > 1457 if (long_val == -1) >> >> > (gdb) n >> >> > 1460 options.config_cpus = long_val; >> >> > (gdb) n >> >> > 1462 pfmon_get_phys_cpu_mask(); >> >> > (gdb) n >> >> > 1464 clock_getres(CLOCK_MONOTONIC, &ts); >> >> > (gdb) n >> >> > 1465 options.clock_res = ts.tv_sec * 1000000000 + ts.tv_nsec; >> >> > (gdb) n >> >> > 1466 options.page_size = getpagesize(); >> >> > (gdb) n >> >> > 1467 options.cpu_mhz = pfmon_find_cpu_speed(); >> >> > (gdb) n >> >> > 1469 pfm_get_max_event_name_len(&len); >> >> > (gdb) s >> >> > pfm_get_max_event_name_len (len=0xbf841cc0) at pfmlib_common.c:907 >> >> > 907 if (PFMLIB_INITIALIZED() == 0) >> >> > (gdb) n >> >> > 909 if (len == NULL) >> >> > (gdb) n >> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { >> >> > (gdb) n >> >> > 913 str = pfm_current->get_event_name(i); >> >> > (gdb) p i >> >> > $1 = 0 >> >> > (gdb) n >> >> > 914 if (!str) >> >> > (gdb) n >> >> > 916 l = strlen(str); >> >> > (gdb) n >> >> > >> >> > Program received signal SIGSEGV, Segmentation fault. >> >> > 0xb7e5c613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> > (gdb) >> >> > >> >> > >> >> > On Thu, Sep 24, 2009 at 4:20 AM, stephane eranian >> >> > <er...@go...> >> >> > wrote: >> >> >> >> >> >> On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng <dd...@gm...> >> >> >> wrote: >> >> >> > I tracked into the program and found the segmentation fault >> happened >> >> >> > at: >> >> >> > >> >> >> > in pfmon.c >> >> >> > pfmon_initialize()->pfm_get_max_event_name_len(&len) >> >> >> > >> >> >> > then it jumped into pfmlib_common.c >> >> >> > >> >> >> > pfm_get_max_event_name_len (len=0xbffd9460) at pfmlib_common.c:907 >> >> >> > 907 if (PFMLIB_INITIALIZED() == 0) >> >> >> > (gdb) n >> >> >> > 909 if (len == NULL) >> >> >> > (gdb) n >> >> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { >> >> >> > (gdb) n >> >> >> > 913 str = pfm_current->get_event_name(i); >> >> >> > (gdb) n >> >> >> > 914 if (!str) >> >> >> > (gdb) n >> >> >> > 916 l = strlen(str); >> >> >> > (gdb) n >> >> >> > >> >> >> > Program received signal SIGSEGV, Segmentation fault. >> >> >> > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> >> > >> >> >> > Here is the backtrace: >> >> >> > >> >> >> > Program received signal SIGSEGV, Segmentation fault. >> >> >> > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] >> >> >> > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> >> > (gdb) backtrace >> >> >> > #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> >> > #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) >> >> >> > at pfmlib_common.c:916 >> >> >> > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at >> pfmon.c:1469 >> >> >> > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at pfmon.c:1900 >> >> >> > (gdb) >> >> >> >> >> >> >> >> >> I have seen this problem on an other machine as well. But I don't >> >> >> remember >> >> >> what >> >> >> the cause was. It has to do with the event table. >> >> >> Could you print the value of i (the event index) so we know where it >> >> >> stops? >> >> >> >> >> >> > >> >> >> > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian >> >> >> > <er...@go...> >> >> >> > wrote: >> >> >> >> >> >> >> >> What does ldd pfmon say? >> >> >> >> >> >> >> >> >> >> >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng <dd...@gm... >> > >> >> >> >> wrote: >> >> >> >> > Hello, >> >> >> >> > >> >> >> >> > I patched the kernel and installed both libpfm and perfmon, >> >> >> >> > however I >> >> >> >> > got >> >> >> >> > segmentation fault while I tried running command: "pfmon >> --help'. >> >> >> >> > Could >> >> >> >> > anyone help me to figure it out please? >> >> >> >> > >> >> >> >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the >> latest >> >> >> >> > version >> >> >> >> > of libpfm, perfmon, and the base system patch from the >> sourceforge >> >> >> >> > page. >> >> >> >> > My >> >> >> >> > processor is Intel core i7 920 and I adjusted related >> >> >> >> > configuration >> >> >> >> > when >> >> >> >> > I >> >> >> >> > configured the kernel. Following is the debug message from >> gdb: >> >> >> >> > >> >> >> >> > >> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make >> install >> >> >> >> > [sudo] password for qdeng: >> >> >> >> > make[1]: Entering directory >> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> >> >> >> > make[2]: Entering directory >> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> >> >> >> > make[2]: Nothing to be done for `all'. >> >> >> >> > make[2]: Leaving directory >> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> >> >> >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o >> >> >> >> > pfmon_task.o >> >> >> >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o >> >> >> >> > pfmon_os.o >> >> >> >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o >> pfmon_gen_ia32.o >> >> >> >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o pfmon_intel_nhm.o >> >> >> >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT >> >> >> >> > -I/usr/local/include >> >> >> >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG >> >> >> >> > -DDATADIR=\"/usr/local/share/pfmon\" >> >> >> >> > -I. >> >> >> >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g >> >> >> >> > smpl_mod/libsmplfmt.a >> >> >> >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic >> >> >> >> > -L/usr/local/lib >> >> >> >> > -lpfm >> >> >> >> > mkdir -p /usr/local/bin >> >> >> >> > install -m 755 pfmon /usr/local/bin/pfmon >> >> >> >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen >> >> >> >> > make[1]: Leaving directory >> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> >> >> >> > make[1]: Entering directory >> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> >> >> >> > mkdir -p /usr/local/bin >> >> >> >> > install -m 755 pfdbg /usr/local/bin/pfdbg >> >> >> >> > make[1]: Leaving directory >> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> >> >> >> > make[1]: Entering directory >> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> >> >> >> > mkdir -p /usr/local/share/man/man1 >> >> >> >> > install -m 644 pfmon.1 /usr/local/share/man/man1 >> >> >> >> > make[1]: Leaving directory >> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help >> >> >> >> > Segmentation fault >> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon >> >> >> >> > GNU gdb 6.8-debian >> >> >> >> > 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 "i486-linux-gnu"... >> >> >> >> > (gdb) run --help >> >> >> >> > Starting program: /usr/local/bin/pfmon --help >> >> >> >> > [Thread debugging using libthread_db enabled] >> >> >> >> > [New Thread 0xb7e598d0 (LWP 4437)] >> >> >> >> > >> >> >> >> > Program received signal SIGSEGV, Segmentation fault. >> >> >> >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] >> >> >> >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> >> >> > (gdb) >> >> >> >> > >> >> >> >> > Thanks! >> >> >> >> > Qingyuan >> >> >> >> > >> >> >> >> > >> >> >> >> > >> >> >> >> > >> >> >> >> > >> ------------------------------------------------------------------------------ >> >> >> >> > Come build with us! The BlackBerry® Developer Conference in >> >> >> >> > SF, >> >> >> >> > CA >> >> >> >> > is the only developer event you need to attend this year. >> >> >> >> > Jumpstart >> >> >> >> > your >> >> >> >> > developing skills, take BlackBerry mobile applications to >> market >> >> >> >> > and >> >> >> >> > stay >> >> >> >> > ahead of the curve. Join us from November 9-12, 2009. >> Register >> >> >> >> > now! >> >> >> >> > http://p.sf.net/sfu/devconf >> >> >> >> > _______________________________________________ >> >> >> >> > perfmon2-devel mailing list >> >> >> >> > per...@li... >> >> >> >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel >> >> >> >> > >> >> >> >> > >> >> >> > >> >> >> > >> >> > >> >> > >> > >> > >> > > |
From: stephane e. <er...@go...> - 2009-09-24 21:17:12
|
On Thu, Sep 24, 2009 at 11:14 PM, Qingyuan Deng <dd...@gm...> wrote: > No, it doesn't work either. Exactly the same problem. Do you think it is due > to the compiler? I am using gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3 Nobody else reported this problem so far. Yet, as I said, I think I have encoutered it a while back. You see it could be something like the compiler is putting data in read-only sections but the code is trying to modify it. Or there is something corrupted in the event table for Nehalem. Do you have another type of machine installed with the same distro? Unfortunately, it is hard for me to help you because I cannot reproduce the problem on my systems. > Thank you! > > On Thu, Sep 24, 2009 at 5:08 PM, Qingyuan Deng <dd...@gm...> wrote: >> >> I thought I compile it as the default configuration file you put there >> which is "O2"... OK, I am trying to re-compile it with O0. >> >> >> On Thu, Sep 24, 2009 at 4:54 PM, stephane eranian <er...@go...> >> wrote: >>> >>> What is you try to compile libpfm with OPTIM=-O0? >>> >>> >>> On Thu, Sep 24, 2009 at 10:22 PM, Qingyuan Deng <dd...@gm...> wrote: >>> > Starting program: >>> > /home/qdeng/pmu/perfmon2/libpfm-3.9/examples_v2.x/self >>> > [Thread debugging using libthread_db enabled] >>> > sycall base 333 >>> > major version 2 >>> > minor version 82 >>> > [New Thread 0xb7eb96c0 (LWP 21252)] >>> > >>> > Program received signal SIGSEGV, Segmentation fault. >>> > [Switching to Thread 0xb7eb96c0 (LWP 21252)] >>> > 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >>> > (gdb) backtrace >>> > #0 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >>> > #1 0x0804a0a1 in pfm_get_max_event_name_len (len=0xbfc9491c) >>> > at pfmlib_common.c:916 >>> > #2 0x08048d9b in main (argc=1, argv=0xbfc949d4) at self.c:106 >>> > (gdb) >>> > >>> > >>> > On Thu, Sep 24, 2009 at 4:18 PM, stephane eranian >>> > <er...@go...> >>> > wrote: >>> >> >>> >> What about you try libpfm/examples_v2.x/self. >>> >> Does it crash too? >>> >> >>> >> >>> >> On Thu, Sep 24, 2009 at 10:13 PM, Qingyuan Deng <dd...@gm...> >>> >> wrote: >>> >> > Hi Stephane, >>> >> > Do you mean mean the i value in "for(i =0; i >>> >> > <pfm_current->pme_count; >>> >> > i++) " >>> >> > in pfmlib_common.c? >>> >> > >>> >> > Then it is 0 while the program stops. >>> >> > >>> >> > Thanks! >>> >> > -------------------------------------------------------------------- >>> >> > (gdb) b 1899 >>> >> > Breakpoint 1 at 0x804ead1: file pfmon.c, line 1899. >>> >> > (gdb) r --help >>> >> > Starting program: /usr/local/bin/pfmon --help >>> >> > [Thread debugging using libthread_db enabled] >>> >> > [New Thread 0xb7de48d0 (LWP 20951)] >>> >> > [Switching to Thread 0xb7de48d0 (LWP 20951)] >>> >> > >>> >> > Breakpoint 1, main (argc=2, argv=0xbf841dc4) at pfmon.c:1900 >>> >> > 1900 pfmon_initialize(argv); >>> >> > (gdb) s >>> >> > pfmon_initialize (argv=0xbf841dc4) at pfmon.c:1387 >>> >> > 1387 pfmon_get_version(); >>> >> > (gdb) n >>> >> > 1389 ret = pfmon_api_probe(); >>> >> > (gdb) n >>> >> > 1390 if (ret) { >>> >> > (gdb) n >>> >> > 1402 if (options.pfm_version != PERFMON_VERSION_20) >>> >> > (gdb) n >>> >> > 1403 options.opt_has_sets = 1; >>> >> > (gdb) n >>> >> > 1408 pfmon_arch_initialize(); >>> >> > (gdb) n >>> >> > 1410 setup_common_signals(); >>> >> > (gdb) n >>> >> > 1413 if (pfm_initialize() != PFMLIB_SUCCESS) >>> >> > (gdb) n >>> >> > 1416 pfm_get_version(&version); >>> >> > (gdb) n >>> >> > 1417 if (PFM_VERSION_MAJOR(version) < 3 || >>> >> > PFM_VERSION_MINOR(version) >>> >> > < 2) >>> >> > (gdb) n >>> >> > 1421 options.arg_mem_max = pfmon_get_perfmon_arg_mem_max(); >>> >> > (gdb) n >>> >> > 1423 ret = pfm_get_pmu_type(&options.pmu_type); >>> >> > (gdb) n >>> >> > 1424 if (ret != PFMLIB_SUCCESS) { >>> >> > (gdb) n >>> >> > 1428 ret = pfm_get_num_counters(&options.max_counters); >>> >> > (gdb) n >>> >> > 1429 if (ret != PFMLIB_SUCCESS) { >>> >> > (gdb) n >>> >> > 1433 if (check_forced_generic(argv[0])) { >>> >> > (gdb) n >>> >> > 1442 pfmon_detect(); >>> >> > (gdb) n >>> >> > 1444 options.session_timeout = PFMON_NO_TIMEOUT; >>> >> > (gdb) n >>> >> > 1445 options.interval = PFMON_NO_TIMEOUT; >>> >> > (gdb) n >>> >> > 1450 long_val = sysconf(_SC_NPROCESSORS_ONLN); >>> >> > (gdb) n >>> >> > 1451 if (long_val == -1) >>> >> > (gdb) n >>> >> > 1454 options.online_cpus = long_val; >>> >> > (gdb) n >>> >> > 1456 long_val = sysconf(_SC_NPROCESSORS_CONF); >>> >> > (gdb) n >>> >> > 1457 if (long_val == -1) >>> >> > (gdb) n >>> >> > 1460 options.config_cpus = long_val; >>> >> > (gdb) n >>> >> > 1462 pfmon_get_phys_cpu_mask(); >>> >> > (gdb) n >>> >> > 1464 clock_getres(CLOCK_MONOTONIC, &ts); >>> >> > (gdb) n >>> >> > 1465 options.clock_res = ts.tv_sec * 1000000000 + >>> >> > ts.tv_nsec; >>> >> > (gdb) n >>> >> > 1466 options.page_size = getpagesize(); >>> >> > (gdb) n >>> >> > 1467 options.cpu_mhz = pfmon_find_cpu_speed(); >>> >> > (gdb) n >>> >> > 1469 pfm_get_max_event_name_len(&len); >>> >> > (gdb) s >>> >> > pfm_get_max_event_name_len (len=0xbf841cc0) at pfmlib_common.c:907 >>> >> > 907 if (PFMLIB_INITIALIZED() == 0) >>> >> > (gdb) n >>> >> > 909 if (len == NULL) >>> >> > (gdb) n >>> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { >>> >> > (gdb) n >>> >> > 913 str = pfm_current->get_event_name(i); >>> >> > (gdb) p i >>> >> > $1 = 0 >>> >> > (gdb) n >>> >> > 914 if (!str) >>> >> > (gdb) n >>> >> > 916 l = strlen(str); >>> >> > (gdb) n >>> >> > >>> >> > Program received signal SIGSEGV, Segmentation fault. >>> >> > 0xb7e5c613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >>> >> > (gdb) >>> >> > >>> >> > >>> >> > On Thu, Sep 24, 2009 at 4:20 AM, stephane eranian >>> >> > <er...@go...> >>> >> > wrote: >>> >> >> >>> >> >> On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng <dd...@gm...> >>> >> >> wrote: >>> >> >> > I tracked into the program and found the segmentation fault >>> >> >> > happened >>> >> >> > at: >>> >> >> > >>> >> >> > in pfmon.c >>> >> >> > pfmon_initialize()->pfm_get_max_event_name_len(&len) >>> >> >> > >>> >> >> > then it jumped into pfmlib_common.c >>> >> >> > >>> >> >> > pfm_get_max_event_name_len (len=0xbffd9460) at >>> >> >> > pfmlib_common.c:907 >>> >> >> > 907 if (PFMLIB_INITIALIZED() == 0) >>> >> >> > (gdb) n >>> >> >> > 909 if (len == NULL) >>> >> >> > (gdb) n >>> >> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { >>> >> >> > (gdb) n >>> >> >> > 913 str = pfm_current->get_event_name(i); >>> >> >> > (gdb) n >>> >> >> > 914 if (!str) >>> >> >> > (gdb) n >>> >> >> > 916 l = strlen(str); >>> >> >> > (gdb) n >>> >> >> > >>> >> >> > Program received signal SIGSEGV, Segmentation fault. >>> >> >> > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >>> >> >> > >>> >> >> > Here is the backtrace: >>> >> >> > >>> >> >> > Program received signal SIGSEGV, Segmentation fault. >>> >> >> > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] >>> >> >> > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >>> >> >> > (gdb) backtrace >>> >> >> > #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >>> >> >> > #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) >>> >> >> > at pfmlib_common.c:916 >>> >> >> > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at >>> >> >> > pfmon.c:1469 >>> >> >> > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at pfmon.c:1900 >>> >> >> > (gdb) >>> >> >> >>> >> >> >>> >> >> I have seen this problem on an other machine as well. But I don't >>> >> >> remember >>> >> >> what >>> >> >> the cause was. It has to do with the event table. >>> >> >> Could you print the value of i (the event index) so we know where >>> >> >> it >>> >> >> stops? >>> >> >> >>> >> >> > >>> >> >> > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian >>> >> >> > <er...@go...> >>> >> >> > wrote: >>> >> >> >> >>> >> >> >> What does ldd pfmon say? >>> >> >> >> >>> >> >> >> >>> >> >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng >>> >> >> >> <dd...@gm...> >>> >> >> >> wrote: >>> >> >> >> > Hello, >>> >> >> >> > >>> >> >> >> > I patched the kernel and installed both libpfm and perfmon, >>> >> >> >> > however I >>> >> >> >> > got >>> >> >> >> > segmentation fault while I tried running command: "pfmon >>> >> >> >> > --help'. >>> >> >> >> > Could >>> >> >> >> > anyone help me to figure it out please? >>> >> >> >> > >>> >> >> >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the >>> >> >> >> > latest >>> >> >> >> > version >>> >> >> >> > of libpfm, perfmon, and the base system patch from the >>> >> >> >> > sourceforge >>> >> >> >> > page. >>> >> >> >> > My >>> >> >> >> > processor is Intel core i7 920 and I adjusted related >>> >> >> >> > configuration >>> >> >> >> > when >>> >> >> >> > I >>> >> >> >> > configured the kernel. Following is the debug message from >>> >> >> >> > gdb: >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make >>> >> >> >> > install >>> >> >> >> > [sudo] password for qdeng: >>> >> >> >> > make[1]: Entering directory >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >>> >> >> >> > make[2]: Entering directory >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >>> >> >> >> > make[2]: Nothing to be done for `all'. >>> >> >> >> > make[2]: Leaving directory >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >>> >> >> >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o >>> >> >> >> > pfmon_task.o >>> >> >> >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o pfmon_smpl_dfl.o >>> >> >> >> > pfmon_os.o >>> >> >> >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o >>> >> >> >> > pfmon_gen_ia32.o >>> >> >> >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o >>> >> >> >> > pfmon_intel_nhm.o >>> >> >> >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT >>> >> >> >> > -I/usr/local/include >>> >> >> >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG >>> >> >> >> > -DDATADIR=\"/usr/local/share/pfmon\" >>> >> >> >> > -I. >>> >> >> >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g >>> >> >> >> > smpl_mod/libsmplfmt.a >>> >> >> >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic >>> >> >> >> > -L/usr/local/lib >>> >> >> >> > -lpfm >>> >> >> >> > mkdir -p /usr/local/bin >>> >> >> >> > install -m 755 pfmon /usr/local/bin/pfmon >>> >> >> >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen >>> >> >> >> > make[1]: Leaving directory >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >>> >> >> >> > make[1]: Entering directory >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >>> >> >> >> > mkdir -p /usr/local/bin >>> >> >> >> > install -m 755 pfdbg /usr/local/bin/pfdbg >>> >> >> >> > make[1]: Leaving directory >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >>> >> >> >> > make[1]: Entering directory >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >>> >> >> >> > mkdir -p /usr/local/share/man/man1 >>> >> >> >> > install -m 644 pfmon.1 /usr/local/share/man/man1 >>> >> >> >> > make[1]: Leaving directory >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help >>> >> >> >> > Segmentation fault >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon >>> >> >> >> > GNU gdb 6.8-debian >>> >> >> >> > 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 "i486-linux-gnu"... >>> >> >> >> > (gdb) run --help >>> >> >> >> > Starting program: /usr/local/bin/pfmon --help >>> >> >> >> > [Thread debugging using libthread_db enabled] >>> >> >> >> > [New Thread 0xb7e598d0 (LWP 4437)] >>> >> >> >> > >>> >> >> >> > Program received signal SIGSEGV, Segmentation fault. >>> >> >> >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] >>> >> >> >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >>> >> >> >> > (gdb) >>> >> >> >> > >>> >> >> >> > Thanks! >>> >> >> >> > Qingyuan >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > ------------------------------------------------------------------------------ >>> >> >> >> > Come build with us! The BlackBerry® Developer Conference >>> >> >> >> > in >>> >> >> >> > SF, >>> >> >> >> > CA >>> >> >> >> > is the only developer event you need to attend this year. >>> >> >> >> > Jumpstart >>> >> >> >> > your >>> >> >> >> > developing skills, take BlackBerry mobile applications to >>> >> >> >> > market >>> >> >> >> > and >>> >> >> >> > stay >>> >> >> >> > ahead of the curve. Join us from November 9-12, 2009. >>> >> >> >> > Register >>> >> >> >> > now! >>> >> >> >> > http://p.sf.net/sfu/devconf >>> >> >> >> > _______________________________________________ >>> >> >> >> > perfmon2-devel mailing list >>> >> >> >> > per...@li... >>> >> >> >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel >>> >> >> >> > >>> >> >> >> > >>> >> >> > >>> >> >> > >>> >> > >>> >> > >>> > >>> > >> > > |
From: Qingyuan D. <dd...@gm...> - 2009-09-24 21:24:43
|
Ok, I will try to replace the compiler with a different version and to see what will happen. And could I have your software stack configuration on a working Nehalem system? Anyway, I appreciate your help! Qingyuan On Thu, Sep 24, 2009 at 5:17 PM, stephane eranian <er...@go...>wrote: > On Thu, Sep 24, 2009 at 11:14 PM, Qingyuan Deng <dd...@gm...> wrote: > > No, it doesn't work either. Exactly the same problem. Do you think it is > due > > to the compiler? I am using gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3 > > Nobody else reported this problem so far. Yet, as I said, I think I > have encoutered > it a while back. > You see it could be something like the compiler is putting data in > read-only sections > but the code is trying to modify it. Or there is something corrupted > in the event table > for Nehalem. > > Do you have another type of machine installed with the same distro? > > Unfortunately, it is hard for me to help you because I cannot > reproduce the problem > on my systems. > > > Thank you! > > > > On Thu, Sep 24, 2009 at 5:08 PM, Qingyuan Deng <dd...@gm...> wrote: > >> > >> I thought I compile it as the default configuration file you put there > >> which is "O2"... OK, I am trying to re-compile it with O0. > >> > >> > >> On Thu, Sep 24, 2009 at 4:54 PM, stephane eranian < > er...@go...> > >> wrote: > >>> > >>> What is you try to compile libpfm with OPTIM=-O0? > >>> > >>> > >>> On Thu, Sep 24, 2009 at 10:22 PM, Qingyuan Deng <dd...@gm...> > wrote: > >>> > Starting program: > >>> > /home/qdeng/pmu/perfmon2/libpfm-3.9/examples_v2.x/self > >>> > [Thread debugging using libthread_db enabled] > >>> > sycall base 333 > >>> > major version 2 > >>> > minor version 82 > >>> > [New Thread 0xb7eb96c0 (LWP 21252)] > >>> > > >>> > Program received signal SIGSEGV, Segmentation fault. > >>> > [Switching to Thread 0xb7eb96c0 (LWP 21252)] > >>> > 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >>> > (gdb) backtrace > >>> > #0 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >>> > #1 0x0804a0a1 in pfm_get_max_event_name_len (len=0xbfc9491c) > >>> > at pfmlib_common.c:916 > >>> > #2 0x08048d9b in main (argc=1, argv=0xbfc949d4) at self.c:106 > >>> > (gdb) > >>> > > >>> > > >>> > On Thu, Sep 24, 2009 at 4:18 PM, stephane eranian > >>> > <er...@go...> > >>> > wrote: > >>> >> > >>> >> What about you try libpfm/examples_v2.x/self. > >>> >> Does it crash too? > >>> >> > >>> >> > >>> >> On Thu, Sep 24, 2009 at 10:13 PM, Qingyuan Deng <dd...@gm...> > >>> >> wrote: > >>> >> > Hi Stephane, > >>> >> > Do you mean mean the i value in "for(i =0; i > >>> >> > <pfm_current->pme_count; > >>> >> > i++) " > >>> >> > in pfmlib_common.c? > >>> >> > > >>> >> > Then it is 0 while the program stops. > >>> >> > > >>> >> > Thanks! > >>> >> > > -------------------------------------------------------------------- > >>> >> > (gdb) b 1899 > >>> >> > Breakpoint 1 at 0x804ead1: file pfmon.c, line 1899. > >>> >> > (gdb) r --help > >>> >> > Starting program: /usr/local/bin/pfmon --help > >>> >> > [Thread debugging using libthread_db enabled] > >>> >> > [New Thread 0xb7de48d0 (LWP 20951)] > >>> >> > [Switching to Thread 0xb7de48d0 (LWP 20951)] > >>> >> > > >>> >> > Breakpoint 1, main (argc=2, argv=0xbf841dc4) at pfmon.c:1900 > >>> >> > 1900 pfmon_initialize(argv); > >>> >> > (gdb) s > >>> >> > pfmon_initialize (argv=0xbf841dc4) at pfmon.c:1387 > >>> >> > 1387 pfmon_get_version(); > >>> >> > (gdb) n > >>> >> > 1389 ret = pfmon_api_probe(); > >>> >> > (gdb) n > >>> >> > 1390 if (ret) { > >>> >> > (gdb) n > >>> >> > 1402 if (options.pfm_version != PERFMON_VERSION_20) > >>> >> > (gdb) n > >>> >> > 1403 options.opt_has_sets = 1; > >>> >> > (gdb) n > >>> >> > 1408 pfmon_arch_initialize(); > >>> >> > (gdb) n > >>> >> > 1410 setup_common_signals(); > >>> >> > (gdb) n > >>> >> > 1413 if (pfm_initialize() != PFMLIB_SUCCESS) > >>> >> > (gdb) n > >>> >> > 1416 pfm_get_version(&version); > >>> >> > (gdb) n > >>> >> > 1417 if (PFM_VERSION_MAJOR(version) < 3 || > >>> >> > PFM_VERSION_MINOR(version) > >>> >> > < 2) > >>> >> > (gdb) n > >>> >> > 1421 options.arg_mem_max = pfmon_get_perfmon_arg_mem_max(); > >>> >> > (gdb) n > >>> >> > 1423 ret = pfm_get_pmu_type(&options.pmu_type); > >>> >> > (gdb) n > >>> >> > 1424 if (ret != PFMLIB_SUCCESS) { > >>> >> > (gdb) n > >>> >> > 1428 ret = pfm_get_num_counters(&options.max_counters); > >>> >> > (gdb) n > >>> >> > 1429 if (ret != PFMLIB_SUCCESS) { > >>> >> > (gdb) n > >>> >> > 1433 if (check_forced_generic(argv[0])) { > >>> >> > (gdb) n > >>> >> > 1442 pfmon_detect(); > >>> >> > (gdb) n > >>> >> > 1444 options.session_timeout = PFMON_NO_TIMEOUT; > >>> >> > (gdb) n > >>> >> > 1445 options.interval = PFMON_NO_TIMEOUT; > >>> >> > (gdb) n > >>> >> > 1450 long_val = sysconf(_SC_NPROCESSORS_ONLN); > >>> >> > (gdb) n > >>> >> > 1451 if (long_val == -1) > >>> >> > (gdb) n > >>> >> > 1454 options.online_cpus = long_val; > >>> >> > (gdb) n > >>> >> > 1456 long_val = sysconf(_SC_NPROCESSORS_CONF); > >>> >> > (gdb) n > >>> >> > 1457 if (long_val == -1) > >>> >> > (gdb) n > >>> >> > 1460 options.config_cpus = long_val; > >>> >> > (gdb) n > >>> >> > 1462 pfmon_get_phys_cpu_mask(); > >>> >> > (gdb) n > >>> >> > 1464 clock_getres(CLOCK_MONOTONIC, &ts); > >>> >> > (gdb) n > >>> >> > 1465 options.clock_res = ts.tv_sec * 1000000000 + > >>> >> > ts.tv_nsec; > >>> >> > (gdb) n > >>> >> > 1466 options.page_size = getpagesize(); > >>> >> > (gdb) n > >>> >> > 1467 options.cpu_mhz = pfmon_find_cpu_speed(); > >>> >> > (gdb) n > >>> >> > 1469 pfm_get_max_event_name_len(&len); > >>> >> > (gdb) s > >>> >> > pfm_get_max_event_name_len (len=0xbf841cc0) at pfmlib_common.c:907 > >>> >> > 907 if (PFMLIB_INITIALIZED() == 0) > >>> >> > (gdb) n > >>> >> > 909 if (len == NULL) > >>> >> > (gdb) n > >>> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { > >>> >> > (gdb) n > >>> >> > 913 str = pfm_current->get_event_name(i); > >>> >> > (gdb) p i > >>> >> > $1 = 0 > >>> >> > (gdb) n > >>> >> > 914 if (!str) > >>> >> > (gdb) n > >>> >> > 916 l = strlen(str); > >>> >> > (gdb) n > >>> >> > > >>> >> > Program received signal SIGSEGV, Segmentation fault. > >>> >> > 0xb7e5c613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >>> >> > (gdb) > >>> >> > > >>> >> > > >>> >> > On Thu, Sep 24, 2009 at 4:20 AM, stephane eranian > >>> >> > <er...@go...> > >>> >> > wrote: > >>> >> >> > >>> >> >> On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng <dd...@gm... > > > >>> >> >> wrote: > >>> >> >> > I tracked into the program and found the segmentation fault > >>> >> >> > happened > >>> >> >> > at: > >>> >> >> > > >>> >> >> > in pfmon.c > >>> >> >> > pfmon_initialize()->pfm_get_max_event_name_len(&len) > >>> >> >> > > >>> >> >> > then it jumped into pfmlib_common.c > >>> >> >> > > >>> >> >> > pfm_get_max_event_name_len (len=0xbffd9460) at > >>> >> >> > pfmlib_common.c:907 > >>> >> >> > 907 if (PFMLIB_INITIALIZED() == 0) > >>> >> >> > (gdb) n > >>> >> >> > 909 if (len == NULL) > >>> >> >> > (gdb) n > >>> >> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { > >>> >> >> > (gdb) n > >>> >> >> > 913 str = pfm_current->get_event_name(i); > >>> >> >> > (gdb) n > >>> >> >> > 914 if (!str) > >>> >> >> > (gdb) n > >>> >> >> > 916 l = strlen(str); > >>> >> >> > (gdb) n > >>> >> >> > > >>> >> >> > Program received signal SIGSEGV, Segmentation fault. > >>> >> >> > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >>> >> >> > > >>> >> >> > Here is the backtrace: > >>> >> >> > > >>> >> >> > Program received signal SIGSEGV, Segmentation fault. > >>> >> >> > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] > >>> >> >> > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >>> >> >> > (gdb) backtrace > >>> >> >> > #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >>> >> >> > #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) > >>> >> >> > at pfmlib_common.c:916 > >>> >> >> > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at > >>> >> >> > pfmon.c:1469 > >>> >> >> > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at > pfmon.c:1900 > >>> >> >> > (gdb) > >>> >> >> > >>> >> >> > >>> >> >> I have seen this problem on an other machine as well. But I don't > >>> >> >> remember > >>> >> >> what > >>> >> >> the cause was. It has to do with the event table. > >>> >> >> Could you print the value of i (the event index) so we know where > >>> >> >> it > >>> >> >> stops? > >>> >> >> > >>> >> >> > > >>> >> >> > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian > >>> >> >> > <er...@go...> > >>> >> >> > wrote: > >>> >> >> >> > >>> >> >> >> What does ldd pfmon say? > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng > >>> >> >> >> <dd...@gm...> > >>> >> >> >> wrote: > >>> >> >> >> > Hello, > >>> >> >> >> > > >>> >> >> >> > I patched the kernel and installed both libpfm and perfmon, > >>> >> >> >> > however I > >>> >> >> >> > got > >>> >> >> >> > segmentation fault while I tried running command: "pfmon > >>> >> >> >> > --help'. > >>> >> >> >> > Could > >>> >> >> >> > anyone help me to figure it out please? > >>> >> >> >> > > >>> >> >> >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the > >>> >> >> >> > latest > >>> >> >> >> > version > >>> >> >> >> > of libpfm, perfmon, and the base system patch from the > >>> >> >> >> > sourceforge > >>> >> >> >> > page. > >>> >> >> >> > My > >>> >> >> >> > processor is Intel core i7 920 and I adjusted related > >>> >> >> >> > configuration > >>> >> >> >> > when > >>> >> >> >> > I > >>> >> >> >> > configured the kernel. Following is the debug message from > >>> >> >> >> > gdb: > >>> >> >> >> > > >>> >> >> >> > > >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make > >>> >> >> >> > install > >>> >> >> >> > [sudo] password for qdeng: > >>> >> >> >> > make[1]: Entering directory > >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >>> >> >> >> > make[2]: Entering directory > >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >>> >> >> >> > make[2]: Nothing to be done for `all'. > >>> >> >> >> > make[2]: Leaving directory > >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >>> >> >> >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o pfmon_system.o > >>> >> >> >> > pfmon_task.o > >>> >> >> >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o > pfmon_smpl_dfl.o > >>> >> >> >> > pfmon_os.o > >>> >> >> >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o > >>> >> >> >> > pfmon_gen_ia32.o > >>> >> >> >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o > >>> >> >> >> > pfmon_intel_nhm.o > >>> >> >> >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT > >>> >> >> >> > -I/usr/local/include > >>> >> >> >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG > >>> >> >> >> > -DDATADIR=\"/usr/local/share/pfmon\" > >>> >> >> >> > -I. > >>> >> >> >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g > >>> >> >> >> > smpl_mod/libsmplfmt.a > >>> >> >> >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic > >>> >> >> >> > -L/usr/local/lib > >>> >> >> >> > -lpfm > >>> >> >> >> > mkdir -p /usr/local/bin > >>> >> >> >> > install -m 755 pfmon /usr/local/bin/pfmon > >>> >> >> >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen > >>> >> >> >> > make[1]: Leaving directory > >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >>> >> >> >> > make[1]: Entering directory > >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >>> >> >> >> > mkdir -p /usr/local/bin > >>> >> >> >> > install -m 755 pfdbg /usr/local/bin/pfdbg > >>> >> >> >> > make[1]: Leaving directory > >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >>> >> >> >> > make[1]: Entering directory > >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >>> >> >> >> > mkdir -p /usr/local/share/man/man1 > >>> >> >> >> > install -m 644 pfmon.1 /usr/local/share/man/man1 > >>> >> >> >> > make[1]: Leaving directory > >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help > >>> >> >> >> > Segmentation fault > >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon > >>> >> >> >> > GNU gdb 6.8-debian > >>> >> >> >> > 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 "i486-linux-gnu"... > >>> >> >> >> > (gdb) run --help > >>> >> >> >> > Starting program: /usr/local/bin/pfmon --help > >>> >> >> >> > [Thread debugging using libthread_db enabled] > >>> >> >> >> > [New Thread 0xb7e598d0 (LWP 4437)] > >>> >> >> >> > > >>> >> >> >> > Program received signal SIGSEGV, Segmentation fault. > >>> >> >> >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] > >>> >> >> >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >>> >> >> >> > (gdb) > >>> >> >> >> > > >>> >> >> >> > Thanks! > >>> >> >> >> > Qingyuan > >>> >> >> >> > > >>> >> >> >> > > >>> >> >> >> > > >>> >> >> >> > > >>> >> >> >> > > >>> >> >> >> > > ------------------------------------------------------------------------------ > >>> >> >> >> > Come build with us! The BlackBerry® Developer Conference > >>> >> >> >> > in > >>> >> >> >> > SF, > >>> >> >> >> > CA > >>> >> >> >> > is the only developer event you need to attend this year. > >>> >> >> >> > Jumpstart > >>> >> >> >> > your > >>> >> >> >> > developing skills, take BlackBerry mobile applications to > >>> >> >> >> > market > >>> >> >> >> > and > >>> >> >> >> > stay > >>> >> >> >> > ahead of the curve. Join us from November 9-12, 2009. > >>> >> >> >> > Register > >>> >> >> >> > now! > >>> >> >> >> > http://p.sf.net/sfu/devconf > >>> >> >> >> > _______________________________________________ > >>> >> >> >> > perfmon2-devel mailing list > >>> >> >> >> > per...@li... > >>> >> >> >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel > >>> >> >> >> > > >>> >> >> >> > > >>> >> >> > > >>> >> >> > > >>> >> > > >>> >> > > >>> > > >>> > > >> > > > > > |
From: stephane e. <er...@go...> - 2009-09-24 21:26:17
|
On Thu, Sep 24, 2009 at 11:24 PM, Qingyuan Deng <dd...@gm...> wrote: > Ok, I will try to replace the compiler with a different version and to see > what will happen. And could I have your software stack configuration on a > working Nehalem system? Ubuntu-8.10 x86_64 mode, gcc-4.3.2 > Anyway, I appreciate your help! > Qingyuan > > On Thu, Sep 24, 2009 at 5:17 PM, stephane eranian <er...@go...> > wrote: >> >> On Thu, Sep 24, 2009 at 11:14 PM, Qingyuan Deng <dd...@gm...> wrote: >> > No, it doesn't work either. Exactly the same problem. Do you think it is >> > due >> > to the compiler? I am using gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3 >> >> Nobody else reported this problem so far. Yet, as I said, I think I >> have encoutered >> it a while back. >> You see it could be something like the compiler is putting data in >> read-only sections >> but the code is trying to modify it. Or there is something corrupted >> in the event table >> for Nehalem. >> >> Do you have another type of machine installed with the same distro? >> >> Unfortunately, it is hard for me to help you because I cannot >> reproduce the problem >> on my systems. >> >> > Thank you! >> > >> > On Thu, Sep 24, 2009 at 5:08 PM, Qingyuan Deng <dd...@gm...> wrote: >> >> >> >> I thought I compile it as the default configuration file you put there >> >> which is "O2"... OK, I am trying to re-compile it with O0. >> >> >> >> >> >> On Thu, Sep 24, 2009 at 4:54 PM, stephane eranian >> >> <er...@go...> >> >> wrote: >> >>> >> >>> What is you try to compile libpfm with OPTIM=-O0? >> >>> >> >>> >> >>> On Thu, Sep 24, 2009 at 10:22 PM, Qingyuan Deng <dd...@gm...> >> >>> wrote: >> >>> > Starting program: >> >>> > /home/qdeng/pmu/perfmon2/libpfm-3.9/examples_v2.x/self >> >>> > [Thread debugging using libthread_db enabled] >> >>> > sycall base 333 >> >>> > major version 2 >> >>> > minor version 82 >> >>> > [New Thread 0xb7eb96c0 (LWP 21252)] >> >>> > >> >>> > Program received signal SIGSEGV, Segmentation fault. >> >>> > [Switching to Thread 0xb7eb96c0 (LWP 21252)] >> >>> > 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >>> > (gdb) backtrace >> >>> > #0 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >>> > #1 0x0804a0a1 in pfm_get_max_event_name_len (len=0xbfc9491c) >> >>> > at pfmlib_common.c:916 >> >>> > #2 0x08048d9b in main (argc=1, argv=0xbfc949d4) at self.c:106 >> >>> > (gdb) >> >>> > >> >>> > >> >>> > On Thu, Sep 24, 2009 at 4:18 PM, stephane eranian >> >>> > <er...@go...> >> >>> > wrote: >> >>> >> >> >>> >> What about you try libpfm/examples_v2.x/self. >> >>> >> Does it crash too? >> >>> >> >> >>> >> >> >>> >> On Thu, Sep 24, 2009 at 10:13 PM, Qingyuan Deng <dd...@gm...> >> >>> >> wrote: >> >>> >> > Hi Stephane, >> >>> >> > Do you mean mean the i value in "for(i =0; i >> >>> >> > <pfm_current->pme_count; >> >>> >> > i++) " >> >>> >> > in pfmlib_common.c? >> >>> >> > >> >>> >> > Then it is 0 while the program stops. >> >>> >> > >> >>> >> > Thanks! >> >>> >> > >> >>> >> > -------------------------------------------------------------------- >> >>> >> > (gdb) b 1899 >> >>> >> > Breakpoint 1 at 0x804ead1: file pfmon.c, line 1899. >> >>> >> > (gdb) r --help >> >>> >> > Starting program: /usr/local/bin/pfmon --help >> >>> >> > [Thread debugging using libthread_db enabled] >> >>> >> > [New Thread 0xb7de48d0 (LWP 20951)] >> >>> >> > [Switching to Thread 0xb7de48d0 (LWP 20951)] >> >>> >> > >> >>> >> > Breakpoint 1, main (argc=2, argv=0xbf841dc4) at pfmon.c:1900 >> >>> >> > 1900 pfmon_initialize(argv); >> >>> >> > (gdb) s >> >>> >> > pfmon_initialize (argv=0xbf841dc4) at pfmon.c:1387 >> >>> >> > 1387 pfmon_get_version(); >> >>> >> > (gdb) n >> >>> >> > 1389 ret = pfmon_api_probe(); >> >>> >> > (gdb) n >> >>> >> > 1390 if (ret) { >> >>> >> > (gdb) n >> >>> >> > 1402 if (options.pfm_version != PERFMON_VERSION_20) >> >>> >> > (gdb) n >> >>> >> > 1403 options.opt_has_sets = 1; >> >>> >> > (gdb) n >> >>> >> > 1408 pfmon_arch_initialize(); >> >>> >> > (gdb) n >> >>> >> > 1410 setup_common_signals(); >> >>> >> > (gdb) n >> >>> >> > 1413 if (pfm_initialize() != PFMLIB_SUCCESS) >> >>> >> > (gdb) n >> >>> >> > 1416 pfm_get_version(&version); >> >>> >> > (gdb) n >> >>> >> > 1417 if (PFM_VERSION_MAJOR(version) < 3 || >> >>> >> > PFM_VERSION_MINOR(version) >> >>> >> > < 2) >> >>> >> > (gdb) n >> >>> >> > 1421 options.arg_mem_max = >> >>> >> > pfmon_get_perfmon_arg_mem_max(); >> >>> >> > (gdb) n >> >>> >> > 1423 ret = pfm_get_pmu_type(&options.pmu_type); >> >>> >> > (gdb) n >> >>> >> > 1424 if (ret != PFMLIB_SUCCESS) { >> >>> >> > (gdb) n >> >>> >> > 1428 ret = pfm_get_num_counters(&options.max_counters); >> >>> >> > (gdb) n >> >>> >> > 1429 if (ret != PFMLIB_SUCCESS) { >> >>> >> > (gdb) n >> >>> >> > 1433 if (check_forced_generic(argv[0])) { >> >>> >> > (gdb) n >> >>> >> > 1442 pfmon_detect(); >> >>> >> > (gdb) n >> >>> >> > 1444 options.session_timeout = PFMON_NO_TIMEOUT; >> >>> >> > (gdb) n >> >>> >> > 1445 options.interval = PFMON_NO_TIMEOUT; >> >>> >> > (gdb) n >> >>> >> > 1450 long_val = sysconf(_SC_NPROCESSORS_ONLN); >> >>> >> > (gdb) n >> >>> >> > 1451 if (long_val == -1) >> >>> >> > (gdb) n >> >>> >> > 1454 options.online_cpus = long_val; >> >>> >> > (gdb) n >> >>> >> > 1456 long_val = sysconf(_SC_NPROCESSORS_CONF); >> >>> >> > (gdb) n >> >>> >> > 1457 if (long_val == -1) >> >>> >> > (gdb) n >> >>> >> > 1460 options.config_cpus = long_val; >> >>> >> > (gdb) n >> >>> >> > 1462 pfmon_get_phys_cpu_mask(); >> >>> >> > (gdb) n >> >>> >> > 1464 clock_getres(CLOCK_MONOTONIC, &ts); >> >>> >> > (gdb) n >> >>> >> > 1465 options.clock_res = ts.tv_sec * 1000000000 + >> >>> >> > ts.tv_nsec; >> >>> >> > (gdb) n >> >>> >> > 1466 options.page_size = getpagesize(); >> >>> >> > (gdb) n >> >>> >> > 1467 options.cpu_mhz = pfmon_find_cpu_speed(); >> >>> >> > (gdb) n >> >>> >> > 1469 pfm_get_max_event_name_len(&len); >> >>> >> > (gdb) s >> >>> >> > pfm_get_max_event_name_len (len=0xbf841cc0) at >> >>> >> > pfmlib_common.c:907 >> >>> >> > 907 if (PFMLIB_INITIALIZED() == 0) >> >>> >> > (gdb) n >> >>> >> > 909 if (len == NULL) >> >>> >> > (gdb) n >> >>> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { >> >>> >> > (gdb) n >> >>> >> > 913 str = pfm_current->get_event_name(i); >> >>> >> > (gdb) p i >> >>> >> > $1 = 0 >> >>> >> > (gdb) n >> >>> >> > 914 if (!str) >> >>> >> > (gdb) n >> >>> >> > 916 l = strlen(str); >> >>> >> > (gdb) n >> >>> >> > >> >>> >> > Program received signal SIGSEGV, Segmentation fault. >> >>> >> > 0xb7e5c613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >>> >> > (gdb) >> >>> >> > >> >>> >> > >> >>> >> > On Thu, Sep 24, 2009 at 4:20 AM, stephane eranian >> >>> >> > <er...@go...> >> >>> >> > wrote: >> >>> >> >> >> >>> >> >> On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng >> >>> >> >> <dd...@gm...> >> >>> >> >> wrote: >> >>> >> >> > I tracked into the program and found the segmentation fault >> >>> >> >> > happened >> >>> >> >> > at: >> >>> >> >> > >> >>> >> >> > in pfmon.c >> >>> >> >> > pfmon_initialize()->pfm_get_max_event_name_len(&len) >> >>> >> >> > >> >>> >> >> > then it jumped into pfmlib_common.c >> >>> >> >> > >> >>> >> >> > pfm_get_max_event_name_len (len=0xbffd9460) at >> >>> >> >> > pfmlib_common.c:907 >> >>> >> >> > 907 if (PFMLIB_INITIALIZED() == 0) >> >>> >> >> > (gdb) n >> >>> >> >> > 909 if (len == NULL) >> >>> >> >> > (gdb) n >> >>> >> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { >> >>> >> >> > (gdb) n >> >>> >> >> > 913 str = pfm_current->get_event_name(i); >> >>> >> >> > (gdb) n >> >>> >> >> > 914 if (!str) >> >>> >> >> > (gdb) n >> >>> >> >> > 916 l = strlen(str); >> >>> >> >> > (gdb) n >> >>> >> >> > >> >>> >> >> > Program received signal SIGSEGV, Segmentation fault. >> >>> >> >> > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >>> >> >> > >> >>> >> >> > Here is the backtrace: >> >>> >> >> > >> >>> >> >> > Program received signal SIGSEGV, Segmentation fault. >> >>> >> >> > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] >> >>> >> >> > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >>> >> >> > (gdb) backtrace >> >>> >> >> > #0 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >>> >> >> > #1 0xb7fed411 in pfm_get_max_event_name_len (len=0xbf8d5d60) >> >>> >> >> > at pfmlib_common.c:916 >> >>> >> >> > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at >> >>> >> >> > pfmon.c:1469 >> >>> >> >> > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at >> >>> >> >> > pfmon.c:1900 >> >>> >> >> > (gdb) >> >>> >> >> >> >>> >> >> >> >>> >> >> I have seen this problem on an other machine as well. But I >> >>> >> >> don't >> >>> >> >> remember >> >>> >> >> what >> >>> >> >> the cause was. It has to do with the event table. >> >>> >> >> Could you print the value of i (the event index) so we know >> >>> >> >> where >> >>> >> >> it >> >>> >> >> stops? >> >>> >> >> >> >>> >> >> > >> >>> >> >> > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian >> >>> >> >> > <er...@go...> >> >>> >> >> > wrote: >> >>> >> >> >> >> >>> >> >> >> What does ldd pfmon say? >> >>> >> >> >> >> >>> >> >> >> >> >>> >> >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng >> >>> >> >> >> <dd...@gm...> >> >>> >> >> >> wrote: >> >>> >> >> >> > Hello, >> >>> >> >> >> > >> >>> >> >> >> > I patched the kernel and installed both libpfm and perfmon, >> >>> >> >> >> > however I >> >>> >> >> >> > got >> >>> >> >> >> > segmentation fault while I tried running command: "pfmon >> >>> >> >> >> > --help'. >> >>> >> >> >> > Could >> >>> >> >> >> > anyone help me to figure it out please? >> >>> >> >> >> > >> >>> >> >> >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded the >> >>> >> >> >> > latest >> >>> >> >> >> > version >> >>> >> >> >> > of libpfm, perfmon, and the base system patch from the >> >>> >> >> >> > sourceforge >> >>> >> >> >> > page. >> >>> >> >> >> > My >> >>> >> >> >> > processor is Intel core i7 920 and I adjusted related >> >>> >> >> >> > configuration >> >>> >> >> >> > when >> >>> >> >> >> > I >> >>> >> >> >> > configured the kernel. Following is the debug message from >> >>> >> >> >> > gdb: >> >>> >> >> >> > >> >>> >> >> >> > >> >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make >> >>> >> >> >> > install >> >>> >> >> >> > [sudo] password for qdeng: >> >>> >> >> >> > make[1]: Entering directory >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> >>> >> >> >> > make[2]: Entering directory >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> >>> >> >> >> > make[2]: Nothing to be done for `all'. >> >>> >> >> >> > make[2]: Leaving directory >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> >>> >> >> >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o >> >>> >> >> >> > pfmon_system.o >> >>> >> >> >> > pfmon_task.o >> >>> >> >> >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o >> >>> >> >> >> > pfmon_smpl_dfl.o >> >>> >> >> >> > pfmon_os.o >> >>> >> >> >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o >> >>> >> >> >> > pfmon_gen_ia32.o >> >>> >> >> >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o >> >>> >> >> >> > pfmon_intel_nhm.o >> >>> >> >> >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT >> >>> >> >> >> > -I/usr/local/include >> >>> >> >> >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG >> >>> >> >> >> > -DDATADIR=\"/usr/local/share/pfmon\" >> >>> >> >> >> > -I. >> >>> >> >> >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g >> >>> >> >> >> > smpl_mod/libsmplfmt.a >> >>> >> >> >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic >> >>> >> >> >> > -L/usr/local/lib >> >>> >> >> >> > -lpfm >> >>> >> >> >> > mkdir -p /usr/local/bin >> >>> >> >> >> > install -m 755 pfmon /usr/local/bin/pfmon >> >>> >> >> >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen >> >>> >> >> >> > make[1]: Leaving directory >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> >>> >> >> >> > make[1]: Entering directory >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> >>> >> >> >> > mkdir -p /usr/local/bin >> >>> >> >> >> > install -m 755 pfdbg /usr/local/bin/pfdbg >> >>> >> >> >> > make[1]: Leaving directory >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> >>> >> >> >> > make[1]: Entering directory >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> >>> >> >> >> > mkdir -p /usr/local/share/man/man1 >> >>> >> >> >> > install -m 644 pfmon.1 /usr/local/share/man/man1 >> >>> >> >> >> > make[1]: Leaving directory >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon --help >> >>> >> >> >> > Segmentation fault >> >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon >> >>> >> >> >> > GNU gdb 6.8-debian >> >>> >> >> >> > 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 "i486-linux-gnu"... >> >>> >> >> >> > (gdb) run --help >> >>> >> >> >> > Starting program: /usr/local/bin/pfmon --help >> >>> >> >> >> > [Thread debugging using libthread_db enabled] >> >>> >> >> >> > [New Thread 0xb7e598d0 (LWP 4437)] >> >>> >> >> >> > >> >>> >> >> >> > Program received signal SIGSEGV, Segmentation fault. >> >>> >> >> >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] >> >>> >> >> >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >>> >> >> >> > (gdb) >> >>> >> >> >> > >> >>> >> >> >> > Thanks! >> >>> >> >> >> > Qingyuan >> >>> >> >> >> > >> >>> >> >> >> > >> >>> >> >> >> > >> >>> >> >> >> > >> >>> >> >> >> > >> >>> >> >> >> > >> >>> >> >> >> > ------------------------------------------------------------------------------ >> >>> >> >> >> > Come build with us! The BlackBerry® Developer >> >>> >> >> >> > Conference >> >>> >> >> >> > in >> >>> >> >> >> > SF, >> >>> >> >> >> > CA >> >>> >> >> >> > is the only developer event you need to attend this year. >> >>> >> >> >> > Jumpstart >> >>> >> >> >> > your >> >>> >> >> >> > developing skills, take BlackBerry mobile applications to >> >>> >> >> >> > market >> >>> >> >> >> > and >> >>> >> >> >> > stay >> >>> >> >> >> > ahead of the curve. Join us from November 9-12, 2009. >> >>> >> >> >> > Register >> >>> >> >> >> > now! >> >>> >> >> >> > http://p.sf.net/sfu/devconf >> >>> >> >> >> > _______________________________________________ >> >>> >> >> >> > perfmon2-devel mailing list >> >>> >> >> >> > per...@li... >> >>> >> >> >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel >> >>> >> >> >> > >> >>> >> >> >> > >> >>> >> >> > >> >>> >> >> > >> >>> >> > >> >>> >> > >> >>> > >> >>> > >> >> >> > >> > > > |
From: Qingyuan D. <dd...@gm...> - 2009-09-24 21:27:40
|
Thank you! I will try your configuration. On Thu, Sep 24, 2009 at 5:26 PM, stephane eranian <er...@go...>wrote: > On Thu, Sep 24, 2009 at 11:24 PM, Qingyuan Deng <dd...@gm...> wrote: > > Ok, I will try to replace the compiler with a different version and to > see > > what will happen. And could I have your software stack configuration on a > > working Nehalem system? > > Ubuntu-8.10 x86_64 mode, gcc-4.3.2 > > > Anyway, I appreciate your help! > > Qingyuan > > > > On Thu, Sep 24, 2009 at 5:17 PM, stephane eranian < > er...@go...> > > wrote: > >> > >> On Thu, Sep 24, 2009 at 11:14 PM, Qingyuan Deng <dd...@gm...> > wrote: > >> > No, it doesn't work either. Exactly the same problem. Do you think it > is > >> > due > >> > to the compiler? I am using gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3 > >> > >> Nobody else reported this problem so far. Yet, as I said, I think I > >> have encoutered > >> it a while back. > >> You see it could be something like the compiler is putting data in > >> read-only sections > >> but the code is trying to modify it. Or there is something corrupted > >> in the event table > >> for Nehalem. > >> > >> Do you have another type of machine installed with the same distro? > >> > >> Unfortunately, it is hard for me to help you because I cannot > >> reproduce the problem > >> on my systems. > >> > >> > Thank you! > >> > > >> > On Thu, Sep 24, 2009 at 5:08 PM, Qingyuan Deng <dd...@gm...> > wrote: > >> >> > >> >> I thought I compile it as the default configuration file you put > there > >> >> which is "O2"... OK, I am trying to re-compile it with O0. > >> >> > >> >> > >> >> On Thu, Sep 24, 2009 at 4:54 PM, stephane eranian > >> >> <er...@go...> > >> >> wrote: > >> >>> > >> >>> What is you try to compile libpfm with OPTIM=-O0? > >> >>> > >> >>> > >> >>> On Thu, Sep 24, 2009 at 10:22 PM, Qingyuan Deng <dd...@gm...> > >> >>> wrote: > >> >>> > Starting program: > >> >>> > /home/qdeng/pmu/perfmon2/libpfm-3.9/examples_v2.x/self > >> >>> > [Thread debugging using libthread_db enabled] > >> >>> > sycall base 333 > >> >>> > major version 2 > >> >>> > minor version 82 > >> >>> > [New Thread 0xb7eb96c0 (LWP 21252)] > >> >>> > > >> >>> > Program received signal SIGSEGV, Segmentation fault. > >> >>> > [Switching to Thread 0xb7eb96c0 (LWP 21252)] > >> >>> > 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >>> > (gdb) backtrace > >> >>> > #0 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >>> > #1 0x0804a0a1 in pfm_get_max_event_name_len (len=0xbfc9491c) > >> >>> > at pfmlib_common.c:916 > >> >>> > #2 0x08048d9b in main (argc=1, argv=0xbfc949d4) at self.c:106 > >> >>> > (gdb) > >> >>> > > >> >>> > > >> >>> > On Thu, Sep 24, 2009 at 4:18 PM, stephane eranian > >> >>> > <er...@go...> > >> >>> > wrote: > >> >>> >> > >> >>> >> What about you try libpfm/examples_v2.x/self. > >> >>> >> Does it crash too? > >> >>> >> > >> >>> >> > >> >>> >> On Thu, Sep 24, 2009 at 10:13 PM, Qingyuan Deng < > dd...@gm...> > >> >>> >> wrote: > >> >>> >> > Hi Stephane, > >> >>> >> > Do you mean mean the i value in "for(i =0; i > >> >>> >> > <pfm_current->pme_count; > >> >>> >> > i++) " > >> >>> >> > in pfmlib_common.c? > >> >>> >> > > >> >>> >> > Then it is 0 while the program stops. > >> >>> >> > > >> >>> >> > Thanks! > >> >>> >> > > >> >>> >> > > -------------------------------------------------------------------- > >> >>> >> > (gdb) b 1899 > >> >>> >> > Breakpoint 1 at 0x804ead1: file pfmon.c, line 1899. > >> >>> >> > (gdb) r --help > >> >>> >> > Starting program: /usr/local/bin/pfmon --help > >> >>> >> > [Thread debugging using libthread_db enabled] > >> >>> >> > [New Thread 0xb7de48d0 (LWP 20951)] > >> >>> >> > [Switching to Thread 0xb7de48d0 (LWP 20951)] > >> >>> >> > > >> >>> >> > Breakpoint 1, main (argc=2, argv=0xbf841dc4) at pfmon.c:1900 > >> >>> >> > 1900 pfmon_initialize(argv); > >> >>> >> > (gdb) s > >> >>> >> > pfmon_initialize (argv=0xbf841dc4) at pfmon.c:1387 > >> >>> >> > 1387 pfmon_get_version(); > >> >>> >> > (gdb) n > >> >>> >> > 1389 ret = pfmon_api_probe(); > >> >>> >> > (gdb) n > >> >>> >> > 1390 if (ret) { > >> >>> >> > (gdb) n > >> >>> >> > 1402 if (options.pfm_version != PERFMON_VERSION_20) > >> >>> >> > (gdb) n > >> >>> >> > 1403 options.opt_has_sets = 1; > >> >>> >> > (gdb) n > >> >>> >> > 1408 pfmon_arch_initialize(); > >> >>> >> > (gdb) n > >> >>> >> > 1410 setup_common_signals(); > >> >>> >> > (gdb) n > >> >>> >> > 1413 if (pfm_initialize() != PFMLIB_SUCCESS) > >> >>> >> > (gdb) n > >> >>> >> > 1416 pfm_get_version(&version); > >> >>> >> > (gdb) n > >> >>> >> > 1417 if (PFM_VERSION_MAJOR(version) < 3 || > >> >>> >> > PFM_VERSION_MINOR(version) > >> >>> >> > < 2) > >> >>> >> > (gdb) n > >> >>> >> > 1421 options.arg_mem_max = > >> >>> >> > pfmon_get_perfmon_arg_mem_max(); > >> >>> >> > (gdb) n > >> >>> >> > 1423 ret = pfm_get_pmu_type(&options.pmu_type); > >> >>> >> > (gdb) n > >> >>> >> > 1424 if (ret != PFMLIB_SUCCESS) { > >> >>> >> > (gdb) n > >> >>> >> > 1428 ret = pfm_get_num_counters(&options.max_counters); > >> >>> >> > (gdb) n > >> >>> >> > 1429 if (ret != PFMLIB_SUCCESS) { > >> >>> >> > (gdb) n > >> >>> >> > 1433 if (check_forced_generic(argv[0])) { > >> >>> >> > (gdb) n > >> >>> >> > 1442 pfmon_detect(); > >> >>> >> > (gdb) n > >> >>> >> > 1444 options.session_timeout = PFMON_NO_TIMEOUT; > >> >>> >> > (gdb) n > >> >>> >> > 1445 options.interval = PFMON_NO_TIMEOUT; > >> >>> >> > (gdb) n > >> >>> >> > 1450 long_val = sysconf(_SC_NPROCESSORS_ONLN); > >> >>> >> > (gdb) n > >> >>> >> > 1451 if (long_val == -1) > >> >>> >> > (gdb) n > >> >>> >> > 1454 options.online_cpus = long_val; > >> >>> >> > (gdb) n > >> >>> >> > 1456 long_val = sysconf(_SC_NPROCESSORS_CONF); > >> >>> >> > (gdb) n > >> >>> >> > 1457 if (long_val == -1) > >> >>> >> > (gdb) n > >> >>> >> > 1460 options.config_cpus = long_val; > >> >>> >> > (gdb) n > >> >>> >> > 1462 pfmon_get_phys_cpu_mask(); > >> >>> >> > (gdb) n > >> >>> >> > 1464 clock_getres(CLOCK_MONOTONIC, &ts); > >> >>> >> > (gdb) n > >> >>> >> > 1465 options.clock_res = ts.tv_sec * 1000000000 + > >> >>> >> > ts.tv_nsec; > >> >>> >> > (gdb) n > >> >>> >> > 1466 options.page_size = getpagesize(); > >> >>> >> > (gdb) n > >> >>> >> > 1467 options.cpu_mhz = pfmon_find_cpu_speed(); > >> >>> >> > (gdb) n > >> >>> >> > 1469 pfm_get_max_event_name_len(&len); > >> >>> >> > (gdb) s > >> >>> >> > pfm_get_max_event_name_len (len=0xbf841cc0) at > >> >>> >> > pfmlib_common.c:907 > >> >>> >> > 907 if (PFMLIB_INITIALIZED() == 0) > >> >>> >> > (gdb) n > >> >>> >> > 909 if (len == NULL) > >> >>> >> > (gdb) n > >> >>> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { > >> >>> >> > (gdb) n > >> >>> >> > 913 str = pfm_current->get_event_name(i); > >> >>> >> > (gdb) p i > >> >>> >> > $1 = 0 > >> >>> >> > (gdb) n > >> >>> >> > 914 if (!str) > >> >>> >> > (gdb) n > >> >>> >> > 916 l = strlen(str); > >> >>> >> > (gdb) n > >> >>> >> > > >> >>> >> > Program received signal SIGSEGV, Segmentation fault. > >> >>> >> > 0xb7e5c613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >>> >> > (gdb) > >> >>> >> > > >> >>> >> > > >> >>> >> > On Thu, Sep 24, 2009 at 4:20 AM, stephane eranian > >> >>> >> > <er...@go...> > >> >>> >> > wrote: > >> >>> >> >> > >> >>> >> >> On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng > >> >>> >> >> <dd...@gm...> > >> >>> >> >> wrote: > >> >>> >> >> > I tracked into the program and found the segmentation fault > >> >>> >> >> > happened > >> >>> >> >> > at: > >> >>> >> >> > > >> >>> >> >> > in pfmon.c > >> >>> >> >> > pfmon_initialize()->pfm_get_max_event_name_len(&len) > >> >>> >> >> > > >> >>> >> >> > then it jumped into pfmlib_common.c > >> >>> >> >> > > >> >>> >> >> > pfm_get_max_event_name_len (len=0xbffd9460) at > >> >>> >> >> > pfmlib_common.c:907 > >> >>> >> >> > 907 if (PFMLIB_INITIALIZED() == 0) > >> >>> >> >> > (gdb) n > >> >>> >> >> > 909 if (len == NULL) > >> >>> >> >> > (gdb) n > >> >>> >> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { > >> >>> >> >> > (gdb) n > >> >>> >> >> > 913 str = pfm_current->get_event_name(i); > >> >>> >> >> > (gdb) n > >> >>> >> >> > 914 if (!str) > >> >>> >> >> > (gdb) n > >> >>> >> >> > 916 l = strlen(str); > >> >>> >> >> > (gdb) n > >> >>> >> >> > > >> >>> >> >> > Program received signal SIGSEGV, Segmentation fault. > >> >>> >> >> > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >>> >> >> > > >> >>> >> >> > Here is the backtrace: > >> >>> >> >> > > >> >>> >> >> > Program received signal SIGSEGV, Segmentation fault. > >> >>> >> >> > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] > >> >>> >> >> > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >>> >> >> > (gdb) backtrace > >> >>> >> >> > #0 0xb7ef2613 in strlen () from > /lib/tls/i686/cmov/libc.so.6 > >> >>> >> >> > #1 0xb7fed411 in pfm_get_max_event_name_len > (len=0xbf8d5d60) > >> >>> >> >> > at pfmlib_common.c:916 > >> >>> >> >> > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at > >> >>> >> >> > pfmon.c:1469 > >> >>> >> >> > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at > >> >>> >> >> > pfmon.c:1900 > >> >>> >> >> > (gdb) > >> >>> >> >> > >> >>> >> >> > >> >>> >> >> I have seen this problem on an other machine as well. But I > >> >>> >> >> don't > >> >>> >> >> remember > >> >>> >> >> what > >> >>> >> >> the cause was. It has to do with the event table. > >> >>> >> >> Could you print the value of i (the event index) so we know > >> >>> >> >> where > >> >>> >> >> it > >> >>> >> >> stops? > >> >>> >> >> > >> >>> >> >> > > >> >>> >> >> > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian > >> >>> >> >> > <er...@go...> > >> >>> >> >> > wrote: > >> >>> >> >> >> > >> >>> >> >> >> What does ldd pfmon say? > >> >>> >> >> >> > >> >>> >> >> >> > >> >>> >> >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng > >> >>> >> >> >> <dd...@gm...> > >> >>> >> >> >> wrote: > >> >>> >> >> >> > Hello, > >> >>> >> >> >> > > >> >>> >> >> >> > I patched the kernel and installed both libpfm and > perfmon, > >> >>> >> >> >> > however I > >> >>> >> >> >> > got > >> >>> >> >> >> > segmentation fault while I tried running command: "pfmon > >> >>> >> >> >> > --help'. > >> >>> >> >> >> > Could > >> >>> >> >> >> > anyone help me to figure it out please? > >> >>> >> >> >> > > >> >>> >> >> >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded > the > >> >>> >> >> >> > latest > >> >>> >> >> >> > version > >> >>> >> >> >> > of libpfm, perfmon, and the base system patch from the > >> >>> >> >> >> > sourceforge > >> >>> >> >> >> > page. > >> >>> >> >> >> > My > >> >>> >> >> >> > processor is Intel core i7 920 and I adjusted related > >> >>> >> >> >> > configuration > >> >>> >> >> >> > when > >> >>> >> >> >> > I > >> >>> >> >> >> > configured the kernel. Following is the debug message > from > >> >>> >> >> >> > gdb: > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make > >> >>> >> >> >> > install > >> >>> >> >> >> > [sudo] password for qdeng: > >> >>> >> >> >> > make[1]: Entering directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> >>> >> >> >> > make[2]: Entering directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> >>> >> >> >> > make[2]: Nothing to be done for `all'. > >> >>> >> >> >> > make[2]: Leaving directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> >>> >> >> >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o > >> >>> >> >> >> > pfmon_system.o > >> >>> >> >> >> > pfmon_task.o > >> >>> >> >> >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o > >> >>> >> >> >> > pfmon_smpl_dfl.o > >> >>> >> >> >> > pfmon_os.o > >> >>> >> >> >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o > >> >>> >> >> >> > pfmon_gen_ia32.o > >> >>> >> >> >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o > >> >>> >> >> >> > pfmon_intel_nhm.o > >> >>> >> >> >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT > >> >>> >> >> >> > -I/usr/local/include > >> >>> >> >> >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG > >> >>> >> >> >> > -DDATADIR=\"/usr/local/share/pfmon\" > >> >>> >> >> >> > -I. > >> >>> >> >> >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g > >> >>> >> >> >> > smpl_mod/libsmplfmt.a > >> >>> >> >> >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic > >> >>> >> >> >> > -L/usr/local/lib > >> >>> >> >> >> > -lpfm > >> >>> >> >> >> > mkdir -p /usr/local/bin > >> >>> >> >> >> > install -m 755 pfmon /usr/local/bin/pfmon > >> >>> >> >> >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen > >> >>> >> >> >> > make[1]: Leaving directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> >>> >> >> >> > make[1]: Entering directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> >>> >> >> >> > mkdir -p /usr/local/bin > >> >>> >> >> >> > install -m 755 pfdbg /usr/local/bin/pfdbg > >> >>> >> >> >> > make[1]: Leaving directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> >>> >> >> >> > make[1]: Entering directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> >>> >> >> >> > mkdir -p /usr/local/share/man/man1 > >> >>> >> >> >> > install -m 644 pfmon.1 /usr/local/share/man/man1 > >> >>> >> >> >> > make[1]: Leaving directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon > --help > >> >>> >> >> >> > Segmentation fault > >> >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon > >> >>> >> >> >> > GNU gdb 6.8-debian > >> >>> >> >> >> > 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 "i486-linux-gnu"... > >> >>> >> >> >> > (gdb) run --help > >> >>> >> >> >> > Starting program: /usr/local/bin/pfmon --help > >> >>> >> >> >> > [Thread debugging using libthread_db enabled] > >> >>> >> >> >> > [New Thread 0xb7e598d0 (LWP 4437)] > >> >>> >> >> >> > > >> >>> >> >> >> > Program received signal SIGSEGV, Segmentation fault. > >> >>> >> >> >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] > >> >>> >> >> >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >>> >> >> >> > (gdb) > >> >>> >> >> >> > > >> >>> >> >> >> > Thanks! > >> >>> >> >> >> > Qingyuan > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> >> > > ------------------------------------------------------------------------------ > >> >>> >> >> >> > Come build with us! The BlackBerry® Developer > >> >>> >> >> >> > Conference > >> >>> >> >> >> > in > >> >>> >> >> >> > SF, > >> >>> >> >> >> > CA > >> >>> >> >> >> > is the only developer event you need to attend this year. > >> >>> >> >> >> > Jumpstart > >> >>> >> >> >> > your > >> >>> >> >> >> > developing skills, take BlackBerry mobile applications to > >> >>> >> >> >> > market > >> >>> >> >> >> > and > >> >>> >> >> >> > stay > >> >>> >> >> >> > ahead of the curve. Join us from November 9-12, 2009. > >> >>> >> >> >> > Register > >> >>> >> >> >> > now! > >> >>> >> >> >> > http://p.sf.net/sfu/devconf > >> >>> >> >> >> > _______________________________________________ > >> >>> >> >> >> > perfmon2-devel mailing list > >> >>> >> >> >> > per...@li... > >> >>> >> >> >> > > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> > > >> >>> >> >> > > >> >>> >> > > >> >>> >> > > >> >>> > > >> >>> > > >> >> > >> > > >> > > > > > > |
From: Qingyuan D. <dd...@gm...> - 2009-09-25 01:28:47
|
Hi Stephane, I installed a Ubuntu 8.10 including gcc-4.3.2, but I got the same problem, whatever with O2 or O0 compilation. But the 8.10 is for 32bit version. Will be this the problem? And I trace deeper into the program "self" in example-v2.x in libpfm3.9 folder after I make install it. I got sth below, can you see any clue? Thanks! Qingyuan qdeng@qdeng-desktop:~/pmu/libpfm-3.9/examples_v2.x$ gdb self GNU gdb 6.8-debian 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 "i486-linux-gnu"... (gdb) l 85 pfarg_load_t load_args; 86 pfmlib_options_t pfmlib_options; 87 unsigned int num_counters; 88 size_t len; 89 char *name; 90 91 /* 92 * pass options to library (optional) 93 */ 94 memset(&pfmlib_options, 0, sizeof(pfmlib_options)); (gdb) l 95 pfmlib_options.pfm_debug = 0; /* set to 1 for debug */ 96 pfmlib_options.pfm_verbose = 1; /* set to 1 for verbose */ 97 pfm_set_options(&pfmlib_options); 98 99 /* 100 * Initialize pfm library (required before we can use it) 101 */ 102 ret = pfm_initialize(); 103 if (ret != PFMLIB_SUCCESS) 104 fatal_error("Cannot initialize library: %s\n", pfm_strerror(ret)); (gdb) b 102 Breakpoint 1 at 0x8048dba: file self.c, line 102. (gdb) r Starting program: /home/qdeng/pmu/libpfm-3.9/examples_v2.x/self [Thread debugging using libthread_db enabled] [New Thread 0xb7dad6b0 (LWP 7532)] [Switching to Thread 0xb7dad6b0 (LWP 7532)] Breakpoint 1, main (argc=1, argv=0xbf87de24) at self.c:102 102 ret = pfm_initialize(); (gdb) n sycall base 333 major version 2 minor version 82 103 if (ret != PFMLIB_SUCCESS) (gdb) n 106 pfm_get_max_event_name_len(&len); (gdb) s pfm_get_max_event_name_len (len=0xbf87dd64) at pfmlib_common.c:904 904 size_t max = 0, l; (gdb) n 907 if (PFMLIB_INITIALIZED() == 0) (gdb) n 909 if (len == NULL) (gdb) n 912 for(i=0; i < pfm_current->pme_count; i++) { (gdb) n 913 str = pfm_current->get_event_name(i); (gdb) s pfm_nhm_get_event_name (i=0) at pfmlib_intel_nhm.c:1172 1172 return get_nhm_entry(i)->pme_name; (gdb) p i $1 = 0 (gdb) s get_nhm_entry (i=0) at pfmlib_intel_nhm.c:136 136 return i >= num_pe ? pe+i : unc_pe+i-num_pe; (gdb) p num_pe $2 = 81 (gdb) p unc_pe $3 = (pme_nhm_entry_t *) 0x80ba960 (gdb) n 137 } (gdb) p i $4 = 0 (gdb) n pfm_nhm_get_event_name (i=0) at pfmlib_intel_nhm.c:1173 1173 } (gdb) n pfm_get_max_event_name_len (len=0xbf87dd64) at pfmlib_common.c:914 914 if (!str) (gdb) n 916 l = strlen(str); (gdb) n Program received signal SIGSEGV, Segmentation fault. 0xb7e25323 in strlen () from /lib/tls/i686/cmov/libc.so.6 (gdb) On Thu, Sep 24, 2009 at 5:26 PM, stephane eranian <er...@go...>wrote: > On Thu, Sep 24, 2009 at 11:24 PM, Qingyuan Deng <dd...@gm...> wrote: > > Ok, I will try to replace the compiler with a different version and to > see > > what will happen. And could I have your software stack configuration on a > > working Nehalem system? > > Ubuntu-8.10 x86_64 mode, gcc-4.3.2 > > > Anyway, I appreciate your help! > > Qingyuan > > > > On Thu, Sep 24, 2009 at 5:17 PM, stephane eranian < > er...@go...> > > wrote: > >> > >> On Thu, Sep 24, 2009 at 11:14 PM, Qingyuan Deng <dd...@gm...> > wrote: > >> > No, it doesn't work either. Exactly the same problem. Do you think it > is > >> > due > >> > to the compiler? I am using gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3 > >> > >> Nobody else reported this problem so far. Yet, as I said, I think I > >> have encoutered > >> it a while back. > >> You see it could be something like the compiler is putting data in > >> read-only sections > >> but the code is trying to modify it. Or there is something corrupted > >> in the event table > >> for Nehalem. > >> > >> Do you have another type of machine installed with the same distro? > >> > >> Unfortunately, it is hard for me to help you because I cannot > >> reproduce the problem > >> on my systems. > >> > >> > Thank you! > >> > > >> > On Thu, Sep 24, 2009 at 5:08 PM, Qingyuan Deng <dd...@gm...> > wrote: > >> >> > >> >> I thought I compile it as the default configuration file you put > there > >> >> which is "O2"... OK, I am trying to re-compile it with O0. > >> >> > >> >> > >> >> On Thu, Sep 24, 2009 at 4:54 PM, stephane eranian > >> >> <er...@go...> > >> >> wrote: > >> >>> > >> >>> What is you try to compile libpfm with OPTIM=-O0? > >> >>> > >> >>> > >> >>> On Thu, Sep 24, 2009 at 10:22 PM, Qingyuan Deng <dd...@gm...> > >> >>> wrote: > >> >>> > Starting program: > >> >>> > /home/qdeng/pmu/perfmon2/libpfm-3.9/examples_v2.x/self > >> >>> > [Thread debugging using libthread_db enabled] > >> >>> > sycall base 333 > >> >>> > major version 2 > >> >>> > minor version 82 > >> >>> > [New Thread 0xb7eb96c0 (LWP 21252)] > >> >>> > > >> >>> > Program received signal SIGSEGV, Segmentation fault. > >> >>> > [Switching to Thread 0xb7eb96c0 (LWP 21252)] > >> >>> > 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >>> > (gdb) backtrace > >> >>> > #0 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >>> > #1 0x0804a0a1 in pfm_get_max_event_name_len (len=0xbfc9491c) > >> >>> > at pfmlib_common.c:916 > >> >>> > #2 0x08048d9b in main (argc=1, argv=0xbfc949d4) at self.c:106 > >> >>> > (gdb) > >> >>> > > >> >>> > > >> >>> > On Thu, Sep 24, 2009 at 4:18 PM, stephane eranian > >> >>> > <er...@go...> > >> >>> > wrote: > >> >>> >> > >> >>> >> What about you try libpfm/examples_v2.x/self. > >> >>> >> Does it crash too? > >> >>> >> > >> >>> >> > >> >>> >> On Thu, Sep 24, 2009 at 10:13 PM, Qingyuan Deng < > dd...@gm...> > >> >>> >> wrote: > >> >>> >> > Hi Stephane, > >> >>> >> > Do you mean mean the i value in "for(i =0; i > >> >>> >> > <pfm_current->pme_count; > >> >>> >> > i++) " > >> >>> >> > in pfmlib_common.c? > >> >>> >> > > >> >>> >> > Then it is 0 while the program stops. > >> >>> >> > > >> >>> >> > Thanks! > >> >>> >> > > >> >>> >> > > -------------------------------------------------------------------- > >> >>> >> > (gdb) b 1899 > >> >>> >> > Breakpoint 1 at 0x804ead1: file pfmon.c, line 1899. > >> >>> >> > (gdb) r --help > >> >>> >> > Starting program: /usr/local/bin/pfmon --help > >> >>> >> > [Thread debugging using libthread_db enabled] > >> >>> >> > [New Thread 0xb7de48d0 (LWP 20951)] > >> >>> >> > [Switching to Thread 0xb7de48d0 (LWP 20951)] > >> >>> >> > > >> >>> >> > Breakpoint 1, main (argc=2, argv=0xbf841dc4) at pfmon.c:1900 > >> >>> >> > 1900 pfmon_initialize(argv); > >> >>> >> > (gdb) s > >> >>> >> > pfmon_initialize (argv=0xbf841dc4) at pfmon.c:1387 > >> >>> >> > 1387 pfmon_get_version(); > >> >>> >> > (gdb) n > >> >>> >> > 1389 ret = pfmon_api_probe(); > >> >>> >> > (gdb) n > >> >>> >> > 1390 if (ret) { > >> >>> >> > (gdb) n > >> >>> >> > 1402 if (options.pfm_version != PERFMON_VERSION_20) > >> >>> >> > (gdb) n > >> >>> >> > 1403 options.opt_has_sets = 1; > >> >>> >> > (gdb) n > >> >>> >> > 1408 pfmon_arch_initialize(); > >> >>> >> > (gdb) n > >> >>> >> > 1410 setup_common_signals(); > >> >>> >> > (gdb) n > >> >>> >> > 1413 if (pfm_initialize() != PFMLIB_SUCCESS) > >> >>> >> > (gdb) n > >> >>> >> > 1416 pfm_get_version(&version); > >> >>> >> > (gdb) n > >> >>> >> > 1417 if (PFM_VERSION_MAJOR(version) < 3 || > >> >>> >> > PFM_VERSION_MINOR(version) > >> >>> >> > < 2) > >> >>> >> > (gdb) n > >> >>> >> > 1421 options.arg_mem_max = > >> >>> >> > pfmon_get_perfmon_arg_mem_max(); > >> >>> >> > (gdb) n > >> >>> >> > 1423 ret = pfm_get_pmu_type(&options.pmu_type); > >> >>> >> > (gdb) n > >> >>> >> > 1424 if (ret != PFMLIB_SUCCESS) { > >> >>> >> > (gdb) n > >> >>> >> > 1428 ret = pfm_get_num_counters(&options.max_counters); > >> >>> >> > (gdb) n > >> >>> >> > 1429 if (ret != PFMLIB_SUCCESS) { > >> >>> >> > (gdb) n > >> >>> >> > 1433 if (check_forced_generic(argv[0])) { > >> >>> >> > (gdb) n > >> >>> >> > 1442 pfmon_detect(); > >> >>> >> > (gdb) n > >> >>> >> > 1444 options.session_timeout = PFMON_NO_TIMEOUT; > >> >>> >> > (gdb) n > >> >>> >> > 1445 options.interval = PFMON_NO_TIMEOUT; > >> >>> >> > (gdb) n > >> >>> >> > 1450 long_val = sysconf(_SC_NPROCESSORS_ONLN); > >> >>> >> > (gdb) n > >> >>> >> > 1451 if (long_val == -1) > >> >>> >> > (gdb) n > >> >>> >> > 1454 options.online_cpus = long_val; > >> >>> >> > (gdb) n > >> >>> >> > 1456 long_val = sysconf(_SC_NPROCESSORS_CONF); > >> >>> >> > (gdb) n > >> >>> >> > 1457 if (long_val == -1) > >> >>> >> > (gdb) n > >> >>> >> > 1460 options.config_cpus = long_val; > >> >>> >> > (gdb) n > >> >>> >> > 1462 pfmon_get_phys_cpu_mask(); > >> >>> >> > (gdb) n > >> >>> >> > 1464 clock_getres(CLOCK_MONOTONIC, &ts); > >> >>> >> > (gdb) n > >> >>> >> > 1465 options.clock_res = ts.tv_sec * 1000000000 + > >> >>> >> > ts.tv_nsec; > >> >>> >> > (gdb) n > >> >>> >> > 1466 options.page_size = getpagesize(); > >> >>> >> > (gdb) n > >> >>> >> > 1467 options.cpu_mhz = pfmon_find_cpu_speed(); > >> >>> >> > (gdb) n > >> >>> >> > 1469 pfm_get_max_event_name_len(&len); > >> >>> >> > (gdb) s > >> >>> >> > pfm_get_max_event_name_len (len=0xbf841cc0) at > >> >>> >> > pfmlib_common.c:907 > >> >>> >> > 907 if (PFMLIB_INITIALIZED() == 0) > >> >>> >> > (gdb) n > >> >>> >> > 909 if (len == NULL) > >> >>> >> > (gdb) n > >> >>> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { > >> >>> >> > (gdb) n > >> >>> >> > 913 str = pfm_current->get_event_name(i); > >> >>> >> > (gdb) p i > >> >>> >> > $1 = 0 > >> >>> >> > (gdb) n > >> >>> >> > 914 if (!str) > >> >>> >> > (gdb) n > >> >>> >> > 916 l = strlen(str); > >> >>> >> > (gdb) n > >> >>> >> > > >> >>> >> > Program received signal SIGSEGV, Segmentation fault. > >> >>> >> > 0xb7e5c613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >>> >> > (gdb) > >> >>> >> > > >> >>> >> > > >> >>> >> > On Thu, Sep 24, 2009 at 4:20 AM, stephane eranian > >> >>> >> > <er...@go...> > >> >>> >> > wrote: > >> >>> >> >> > >> >>> >> >> On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng > >> >>> >> >> <dd...@gm...> > >> >>> >> >> wrote: > >> >>> >> >> > I tracked into the program and found the segmentation fault > >> >>> >> >> > happened > >> >>> >> >> > at: > >> >>> >> >> > > >> >>> >> >> > in pfmon.c > >> >>> >> >> > pfmon_initialize()->pfm_get_max_event_name_len(&len) > >> >>> >> >> > > >> >>> >> >> > then it jumped into pfmlib_common.c > >> >>> >> >> > > >> >>> >> >> > pfm_get_max_event_name_len (len=0xbffd9460) at > >> >>> >> >> > pfmlib_common.c:907 > >> >>> >> >> > 907 if (PFMLIB_INITIALIZED() == 0) > >> >>> >> >> > (gdb) n > >> >>> >> >> > 909 if (len == NULL) > >> >>> >> >> > (gdb) n > >> >>> >> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { > >> >>> >> >> > (gdb) n > >> >>> >> >> > 913 str = pfm_current->get_event_name(i); > >> >>> >> >> > (gdb) n > >> >>> >> >> > 914 if (!str) > >> >>> >> >> > (gdb) n > >> >>> >> >> > 916 l = strlen(str); > >> >>> >> >> > (gdb) n > >> >>> >> >> > > >> >>> >> >> > Program received signal SIGSEGV, Segmentation fault. > >> >>> >> >> > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >>> >> >> > > >> >>> >> >> > Here is the backtrace: > >> >>> >> >> > > >> >>> >> >> > Program received signal SIGSEGV, Segmentation fault. > >> >>> >> >> > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] > >> >>> >> >> > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >>> >> >> > (gdb) backtrace > >> >>> >> >> > #0 0xb7ef2613 in strlen () from > /lib/tls/i686/cmov/libc.so.6 > >> >>> >> >> > #1 0xb7fed411 in pfm_get_max_event_name_len > (len=0xbf8d5d60) > >> >>> >> >> > at pfmlib_common.c:916 > >> >>> >> >> > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at > >> >>> >> >> > pfmon.c:1469 > >> >>> >> >> > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at > >> >>> >> >> > pfmon.c:1900 > >> >>> >> >> > (gdb) > >> >>> >> >> > >> >>> >> >> > >> >>> >> >> I have seen this problem on an other machine as well. But I > >> >>> >> >> don't > >> >>> >> >> remember > >> >>> >> >> what > >> >>> >> >> the cause was. It has to do with the event table. > >> >>> >> >> Could you print the value of i (the event index) so we know > >> >>> >> >> where > >> >>> >> >> it > >> >>> >> >> stops? > >> >>> >> >> > >> >>> >> >> > > >> >>> >> >> > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian > >> >>> >> >> > <er...@go...> > >> >>> >> >> > wrote: > >> >>> >> >> >> > >> >>> >> >> >> What does ldd pfmon say? > >> >>> >> >> >> > >> >>> >> >> >> > >> >>> >> >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng > >> >>> >> >> >> <dd...@gm...> > >> >>> >> >> >> wrote: > >> >>> >> >> >> > Hello, > >> >>> >> >> >> > > >> >>> >> >> >> > I patched the kernel and installed both libpfm and > perfmon, > >> >>> >> >> >> > however I > >> >>> >> >> >> > got > >> >>> >> >> >> > segmentation fault while I tried running command: "pfmon > >> >>> >> >> >> > --help'. > >> >>> >> >> >> > Could > >> >>> >> >> >> > anyone help me to figure it out please? > >> >>> >> >> >> > > >> >>> >> >> >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded > the > >> >>> >> >> >> > latest > >> >>> >> >> >> > version > >> >>> >> >> >> > of libpfm, perfmon, and the base system patch from the > >> >>> >> >> >> > sourceforge > >> >>> >> >> >> > page. > >> >>> >> >> >> > My > >> >>> >> >> >> > processor is Intel core i7 920 and I adjusted related > >> >>> >> >> >> > configuration > >> >>> >> >> >> > when > >> >>> >> >> >> > I > >> >>> >> >> >> > configured the kernel. Following is the debug message > from > >> >>> >> >> >> > gdb: > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make > >> >>> >> >> >> > install > >> >>> >> >> >> > [sudo] password for qdeng: > >> >>> >> >> >> > make[1]: Entering directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> >>> >> >> >> > make[2]: Entering directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> >>> >> >> >> > make[2]: Nothing to be done for `all'. > >> >>> >> >> >> > make[2]: Leaving directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' > >> >>> >> >> >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o > >> >>> >> >> >> > pfmon_system.o > >> >>> >> >> >> > pfmon_task.o > >> >>> >> >> >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o > >> >>> >> >> >> > pfmon_smpl_dfl.o > >> >>> >> >> >> > pfmon_os.o > >> >>> >> >> >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o > >> >>> >> >> >> > pfmon_gen_ia32.o > >> >>> >> >> >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o > >> >>> >> >> >> > pfmon_intel_nhm.o > >> >>> >> >> >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT > >> >>> >> >> >> > -I/usr/local/include > >> >>> >> >> >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG > >> >>> >> >> >> > -DDATADIR=\"/usr/local/share/pfmon\" > >> >>> >> >> >> > -I. > >> >>> >> >> >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g > >> >>> >> >> >> > smpl_mod/libsmplfmt.a > >> >>> >> >> >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic > >> >>> >> >> >> > -L/usr/local/lib > >> >>> >> >> >> > -lpfm > >> >>> >> >> >> > mkdir -p /usr/local/bin > >> >>> >> >> >> > install -m 755 pfmon /usr/local/bin/pfmon > >> >>> >> >> >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen > >> >>> >> >> >> > make[1]: Leaving directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' > >> >>> >> >> >> > make[1]: Entering directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> >>> >> >> >> > mkdir -p /usr/local/bin > >> >>> >> >> >> > install -m 755 pfdbg /usr/local/bin/pfdbg > >> >>> >> >> >> > make[1]: Leaving directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' > >> >>> >> >> >> > make[1]: Entering directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> >>> >> >> >> > mkdir -p /usr/local/share/man/man1 > >> >>> >> >> >> > install -m 644 pfmon.1 /usr/local/share/man/man1 > >> >>> >> >> >> > make[1]: Leaving directory > >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' > >> >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon > --help > >> >>> >> >> >> > Segmentation fault > >> >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon > >> >>> >> >> >> > GNU gdb 6.8-debian > >> >>> >> >> >> > 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 "i486-linux-gnu"... > >> >>> >> >> >> > (gdb) run --help > >> >>> >> >> >> > Starting program: /usr/local/bin/pfmon --help > >> >>> >> >> >> > [Thread debugging using libthread_db enabled] > >> >>> >> >> >> > [New Thread 0xb7e598d0 (LWP 4437)] > >> >>> >> >> >> > > >> >>> >> >> >> > Program received signal SIGSEGV, Segmentation fault. > >> >>> >> >> >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] > >> >>> >> >> >> > 0xb7ed1613 in strlen () from /lib/tls/i686/cmov/libc.so.6 > >> >>> >> >> >> > (gdb) > >> >>> >> >> >> > > >> >>> >> >> >> > Thanks! > >> >>> >> >> >> > Qingyuan > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> >> > > ------------------------------------------------------------------------------ > >> >>> >> >> >> > Come build with us! The BlackBerry® Developer > >> >>> >> >> >> > Conference > >> >>> >> >> >> > in > >> >>> >> >> >> > SF, > >> >>> >> >> >> > CA > >> >>> >> >> >> > is the only developer event you need to attend this year. > >> >>> >> >> >> > Jumpstart > >> >>> >> >> >> > your > >> >>> >> >> >> > developing skills, take BlackBerry mobile applications to > >> >>> >> >> >> > market > >> >>> >> >> >> > and > >> >>> >> >> >> > stay > >> >>> >> >> >> > ahead of the curve. Join us from November 9-12, 2009. > >> >>> >> >> >> > Register > >> >>> >> >> >> > now! > >> >>> >> >> >> > http://p.sf.net/sfu/devconf > >> >>> >> >> >> > _______________________________________________ > >> >>> >> >> >> > perfmon2-devel mailing list > >> >>> >> >> >> > per...@li... > >> >>> >> >> >> > > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> > > >> >>> >> >> > > >> >>> >> > > >> >>> >> > > >> >>> > > >> >>> > > >> >> > >> > > >> > > > > > > |
From: stephane e. <er...@go...> - 2009-09-25 05:57:44
|
Well, I don't understand what is going on. I downloaded libpfm-3.9.tar.gz compiled on ubunut-8.10 in x86_64 mode. When I run examples_v2.x/self, I get: $ LIBPFM_DEBUG=1 ./self sycall base 295 major version 2 minor version 82 pfmlib_common.c (pfm_initialize.154): trying AMD64 pfmlib_common.c (pfm_initialize.154): trying Pentium4/Xeon/EM64T pfmlib_common.c (pfm_initialize.154): trying Intel Core pfmlib_common.c (pfm_initialize.154): trying Intel Atom pfmlib_common.c (pfm_initialize.154): trying Intel Nehalem pfmlib_common.c (pfm_initialize.170): found Intel Nehalem una=0xffffffffbff0fff0 [FIXED_CTRL(pmc16)=0xaa pmi0=1 en0=0x2 any0=0 pmi1=1 en1=0x2 any1=0 pmi2=1 en2=0x0 any2=0] INSTRUCTIONS_RETIRED UNHALTED_CORE_CYCLES [FIXED_CTR0(pmd16)] [FIXED_CTR1(pmd17)] PMD17 30569229764 UNHALTED_CORE_CYCLES PMD16 45843038771 INSTRUCTIONS_RETIRED When it crashes, it would be interesting to know the address of str. You could also try examining the content of memory there using the x/64 str command. Also interesting to grab /proc/PID/maps for self just before it calls strlen(). On Fri, Sep 25, 2009 at 3:28 AM, Qingyuan Deng <dd...@gm...> wrote: > Hi Stephane, > I installed a Ubuntu 8.10 including gcc-4.3.2, but I got the same problem, > whatever with O2 or O0 compilation. But the 8.10 is for 32bit version. Will > be this the problem? > And I trace deeper into the program "self" in example-v2.x in libpfm3.9 > folder after I make install it. I got sth below, can you see any clue? > Thanks! > Qingyuan > > qdeng@qdeng-desktop:~/pmu/libpfm-3.9/examples_v2.x$ gdb self > GNU gdb 6.8-debian > 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 "i486-linux-gnu"... > (gdb) l > 85 pfarg_load_t load_args; > 86 pfmlib_options_t pfmlib_options; > 87 unsigned int num_counters; > 88 size_t len; > 89 char *name; > 90 > 91 /* > 92 * pass options to library (optional) > 93 */ > 94 memset(&pfmlib_options, 0, sizeof(pfmlib_options)); > (gdb) l > 95 pfmlib_options.pfm_debug = 0; /* set to 1 for debug */ > 96 pfmlib_options.pfm_verbose = 1; /* set to 1 for verbose */ > 97 pfm_set_options(&pfmlib_options); > 98 > 99 /* > 100 * Initialize pfm library (required before we can use it) > 101 */ > 102 ret = pfm_initialize(); > 103 if (ret != PFMLIB_SUCCESS) > 104 fatal_error("Cannot initialize library: %s\n", > pfm_strerror(ret)); > (gdb) b 102 > Breakpoint 1 at 0x8048dba: file self.c, line 102. > (gdb) r > Starting program: /home/qdeng/pmu/libpfm-3.9/examples_v2.x/self > [Thread debugging using libthread_db enabled] > [New Thread 0xb7dad6b0 (LWP 7532)] > [Switching to Thread 0xb7dad6b0 (LWP 7532)] > > Breakpoint 1, main (argc=1, argv=0xbf87de24) at self.c:102 > 102 ret = pfm_initialize(); > (gdb) n > sycall base 333 > major version 2 > minor version 82 > 103 if (ret != PFMLIB_SUCCESS) > (gdb) n > 106 pfm_get_max_event_name_len(&len); > (gdb) s > pfm_get_max_event_name_len (len=0xbf87dd64) at pfmlib_common.c:904 > 904 size_t max = 0, l; > (gdb) n > 907 if (PFMLIB_INITIALIZED() == 0) > (gdb) n > 909 if (len == NULL) > (gdb) n > 912 for(i=0; i < pfm_current->pme_count; i++) { > (gdb) n > 913 str = pfm_current->get_event_name(i); > (gdb) s > pfm_nhm_get_event_name (i=0) at pfmlib_intel_nhm.c:1172 > 1172 return get_nhm_entry(i)->pme_name; > (gdb) p i > $1 = 0 > (gdb) s > get_nhm_entry (i=0) at pfmlib_intel_nhm.c:136 > 136 return i >= num_pe ? pe+i : unc_pe+i-num_pe; > (gdb) p num_pe > $2 = 81 > (gdb) p unc_pe > $3 = (pme_nhm_entry_t *) 0x80ba960 > (gdb) n > 137 } > (gdb) p i > $4 = 0 > (gdb) n > pfm_nhm_get_event_name (i=0) at pfmlib_intel_nhm.c:1173 > 1173 } > (gdb) n > pfm_get_max_event_name_len (len=0xbf87dd64) at pfmlib_common.c:914 > 914 if (!str) > (gdb) n > 916 l = strlen(str); > (gdb) n > > Program received signal SIGSEGV, Segmentation fault. > 0xb7e25323 in strlen () from /lib/tls/i686/cmov/libc.so.6 > (gdb) > > > On Thu, Sep 24, 2009 at 5:26 PM, stephane eranian <er...@go...> > wrote: >> >> On Thu, Sep 24, 2009 at 11:24 PM, Qingyuan Deng <dd...@gm...> wrote: >> > Ok, I will try to replace the compiler with a different version and to >> > see >> > what will happen. And could I have your software stack configuration on >> > a >> > working Nehalem system? >> >> Ubuntu-8.10 x86_64 mode, gcc-4.3.2 >> >> > Anyway, I appreciate your help! >> > Qingyuan >> > >> > On Thu, Sep 24, 2009 at 5:17 PM, stephane eranian >> > <er...@go...> >> > wrote: >> >> >> >> On Thu, Sep 24, 2009 at 11:14 PM, Qingyuan Deng <dd...@gm...> >> >> wrote: >> >> > No, it doesn't work either. Exactly the same problem. Do you think it >> >> > is >> >> > due >> >> > to the compiler? I am using gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3 >> >> >> >> Nobody else reported this problem so far. Yet, as I said, I think I >> >> have encoutered >> >> it a while back. >> >> You see it could be something like the compiler is putting data in >> >> read-only sections >> >> but the code is trying to modify it. Or there is something corrupted >> >> in the event table >> >> for Nehalem. >> >> >> >> Do you have another type of machine installed with the same distro? >> >> >> >> Unfortunately, it is hard for me to help you because I cannot >> >> reproduce the problem >> >> on my systems. >> >> >> >> > Thank you! >> >> > >> >> > On Thu, Sep 24, 2009 at 5:08 PM, Qingyuan Deng <dd...@gm...> >> >> > wrote: >> >> >> >> >> >> I thought I compile it as the default configuration file you put >> >> >> there >> >> >> which is "O2"... OK, I am trying to re-compile it with O0. >> >> >> >> >> >> >> >> >> On Thu, Sep 24, 2009 at 4:54 PM, stephane eranian >> >> >> <er...@go...> >> >> >> wrote: >> >> >>> >> >> >>> What is you try to compile libpfm with OPTIM=-O0? >> >> >>> >> >> >>> >> >> >>> On Thu, Sep 24, 2009 at 10:22 PM, Qingyuan Deng <dd...@gm...> >> >> >>> wrote: >> >> >>> > Starting program: >> >> >>> > /home/qdeng/pmu/perfmon2/libpfm-3.9/examples_v2.x/self >> >> >>> > [Thread debugging using libthread_db enabled] >> >> >>> > sycall base 333 >> >> >>> > major version 2 >> >> >>> > minor version 82 >> >> >>> > [New Thread 0xb7eb96c0 (LWP 21252)] >> >> >>> > >> >> >>> > Program received signal SIGSEGV, Segmentation fault. >> >> >>> > [Switching to Thread 0xb7eb96c0 (LWP 21252)] >> >> >>> > 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> >>> > (gdb) backtrace >> >> >>> > #0 0xb7f31613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> >>> > #1 0x0804a0a1 in pfm_get_max_event_name_len (len=0xbfc9491c) >> >> >>> > at pfmlib_common.c:916 >> >> >>> > #2 0x08048d9b in main (argc=1, argv=0xbfc949d4) at self.c:106 >> >> >>> > (gdb) >> >> >>> > >> >> >>> > >> >> >>> > On Thu, Sep 24, 2009 at 4:18 PM, stephane eranian >> >> >>> > <er...@go...> >> >> >>> > wrote: >> >> >>> >> >> >> >>> >> What about you try libpfm/examples_v2.x/self. >> >> >>> >> Does it crash too? >> >> >>> >> >> >> >>> >> >> >> >>> >> On Thu, Sep 24, 2009 at 10:13 PM, Qingyuan Deng >> >> >>> >> <dd...@gm...> >> >> >>> >> wrote: >> >> >>> >> > Hi Stephane, >> >> >>> >> > Do you mean mean the i value in "for(i =0; i >> >> >>> >> > <pfm_current->pme_count; >> >> >>> >> > i++) " >> >> >>> >> > in pfmlib_common.c? >> >> >>> >> > >> >> >>> >> > Then it is 0 while the program stops. >> >> >>> >> > >> >> >>> >> > Thanks! >> >> >>> >> > >> >> >>> >> > >> >> >>> >> > -------------------------------------------------------------------- >> >> >>> >> > (gdb) b 1899 >> >> >>> >> > Breakpoint 1 at 0x804ead1: file pfmon.c, line 1899. >> >> >>> >> > (gdb) r --help >> >> >>> >> > Starting program: /usr/local/bin/pfmon --help >> >> >>> >> > [Thread debugging using libthread_db enabled] >> >> >>> >> > [New Thread 0xb7de48d0 (LWP 20951)] >> >> >>> >> > [Switching to Thread 0xb7de48d0 (LWP 20951)] >> >> >>> >> > >> >> >>> >> > Breakpoint 1, main (argc=2, argv=0xbf841dc4) at pfmon.c:1900 >> >> >>> >> > 1900 pfmon_initialize(argv); >> >> >>> >> > (gdb) s >> >> >>> >> > pfmon_initialize (argv=0xbf841dc4) at pfmon.c:1387 >> >> >>> >> > 1387 pfmon_get_version(); >> >> >>> >> > (gdb) n >> >> >>> >> > 1389 ret = pfmon_api_probe(); >> >> >>> >> > (gdb) n >> >> >>> >> > 1390 if (ret) { >> >> >>> >> > (gdb) n >> >> >>> >> > 1402 if (options.pfm_version != PERFMON_VERSION_20) >> >> >>> >> > (gdb) n >> >> >>> >> > 1403 options.opt_has_sets = 1; >> >> >>> >> > (gdb) n >> >> >>> >> > 1408 pfmon_arch_initialize(); >> >> >>> >> > (gdb) n >> >> >>> >> > 1410 setup_common_signals(); >> >> >>> >> > (gdb) n >> >> >>> >> > 1413 if (pfm_initialize() != PFMLIB_SUCCESS) >> >> >>> >> > (gdb) n >> >> >>> >> > 1416 pfm_get_version(&version); >> >> >>> >> > (gdb) n >> >> >>> >> > 1417 if (PFM_VERSION_MAJOR(version) < 3 || >> >> >>> >> > PFM_VERSION_MINOR(version) >> >> >>> >> > < 2) >> >> >>> >> > (gdb) n >> >> >>> >> > 1421 options.arg_mem_max = >> >> >>> >> > pfmon_get_perfmon_arg_mem_max(); >> >> >>> >> > (gdb) n >> >> >>> >> > 1423 ret = pfm_get_pmu_type(&options.pmu_type); >> >> >>> >> > (gdb) n >> >> >>> >> > 1424 if (ret != PFMLIB_SUCCESS) { >> >> >>> >> > (gdb) n >> >> >>> >> > 1428 ret = pfm_get_num_counters(&options.max_counters); >> >> >>> >> > (gdb) n >> >> >>> >> > 1429 if (ret != PFMLIB_SUCCESS) { >> >> >>> >> > (gdb) n >> >> >>> >> > 1433 if (check_forced_generic(argv[0])) { >> >> >>> >> > (gdb) n >> >> >>> >> > 1442 pfmon_detect(); >> >> >>> >> > (gdb) n >> >> >>> >> > 1444 options.session_timeout = PFMON_NO_TIMEOUT; >> >> >>> >> > (gdb) n >> >> >>> >> > 1445 options.interval = PFMON_NO_TIMEOUT; >> >> >>> >> > (gdb) n >> >> >>> >> > 1450 long_val = sysconf(_SC_NPROCESSORS_ONLN); >> >> >>> >> > (gdb) n >> >> >>> >> > 1451 if (long_val == -1) >> >> >>> >> > (gdb) n >> >> >>> >> > 1454 options.online_cpus = long_val; >> >> >>> >> > (gdb) n >> >> >>> >> > 1456 long_val = sysconf(_SC_NPROCESSORS_CONF); >> >> >>> >> > (gdb) n >> >> >>> >> > 1457 if (long_val == -1) >> >> >>> >> > (gdb) n >> >> >>> >> > 1460 options.config_cpus = long_val; >> >> >>> >> > (gdb) n >> >> >>> >> > 1462 pfmon_get_phys_cpu_mask(); >> >> >>> >> > (gdb) n >> >> >>> >> > 1464 clock_getres(CLOCK_MONOTONIC, &ts); >> >> >>> >> > (gdb) n >> >> >>> >> > 1465 options.clock_res = ts.tv_sec * 1000000000 + >> >> >>> >> > ts.tv_nsec; >> >> >>> >> > (gdb) n >> >> >>> >> > 1466 options.page_size = getpagesize(); >> >> >>> >> > (gdb) n >> >> >>> >> > 1467 options.cpu_mhz = pfmon_find_cpu_speed(); >> >> >>> >> > (gdb) n >> >> >>> >> > 1469 pfm_get_max_event_name_len(&len); >> >> >>> >> > (gdb) s >> >> >>> >> > pfm_get_max_event_name_len (len=0xbf841cc0) at >> >> >>> >> > pfmlib_common.c:907 >> >> >>> >> > 907 if (PFMLIB_INITIALIZED() == 0) >> >> >>> >> > (gdb) n >> >> >>> >> > 909 if (len == NULL) >> >> >>> >> > (gdb) n >> >> >>> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { >> >> >>> >> > (gdb) n >> >> >>> >> > 913 str = pfm_current->get_event_name(i); >> >> >>> >> > (gdb) p i >> >> >>> >> > $1 = 0 >> >> >>> >> > (gdb) n >> >> >>> >> > 914 if (!str) >> >> >>> >> > (gdb) n >> >> >>> >> > 916 l = strlen(str); >> >> >>> >> > (gdb) n >> >> >>> >> > >> >> >>> >> > Program received signal SIGSEGV, Segmentation fault. >> >> >>> >> > 0xb7e5c613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> >>> >> > (gdb) >> >> >>> >> > >> >> >>> >> > >> >> >>> >> > On Thu, Sep 24, 2009 at 4:20 AM, stephane eranian >> >> >>> >> > <er...@go...> >> >> >>> >> > wrote: >> >> >>> >> >> >> >> >>> >> >> On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng >> >> >>> >> >> <dd...@gm...> >> >> >>> >> >> wrote: >> >> >>> >> >> > I tracked into the program and found the segmentation fault >> >> >>> >> >> > happened >> >> >>> >> >> > at: >> >> >>> >> >> > >> >> >>> >> >> > in pfmon.c >> >> >>> >> >> > pfmon_initialize()->pfm_get_max_event_name_len(&len) >> >> >>> >> >> > >> >> >>> >> >> > then it jumped into pfmlib_common.c >> >> >>> >> >> > >> >> >>> >> >> > pfm_get_max_event_name_len (len=0xbffd9460) at >> >> >>> >> >> > pfmlib_common.c:907 >> >> >>> >> >> > 907 if (PFMLIB_INITIALIZED() == 0) >> >> >>> >> >> > (gdb) n >> >> >>> >> >> > 909 if (len == NULL) >> >> >>> >> >> > (gdb) n >> >> >>> >> >> > 912 for(i=0; i < pfm_current->pme_count; i++) { >> >> >>> >> >> > (gdb) n >> >> >>> >> >> > 913 str = pfm_current->get_event_name(i); >> >> >>> >> >> > (gdb) n >> >> >>> >> >> > 914 if (!str) >> >> >>> >> >> > (gdb) n >> >> >>> >> >> > 916 l = strlen(str); >> >> >>> >> >> > (gdb) n >> >> >>> >> >> > >> >> >>> >> >> > Program received signal SIGSEGV, Segmentation fault. >> >> >>> >> >> > 0xb7ef5613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> >>> >> >> > >> >> >>> >> >> > Here is the backtrace: >> >> >>> >> >> > >> >> >>> >> >> > Program received signal SIGSEGV, Segmentation fault. >> >> >>> >> >> > [Switching to Thread 0xb7e7a8d0 (LWP 5257)] >> >> >>> >> >> > 0xb7ef2613 in strlen () from /lib/tls/i686/cmov/libc.so.6 >> >> >>> >> >> > (gdb) backtrace >> >> >>> >> >> > #0 0xb7ef2613 in strlen () from >> >> >>> >> >> > /lib/tls/i686/cmov/libc.so.6 >> >> >>> >> >> > #1 0xb7fed411 in pfm_get_max_event_name_len >> >> >>> >> >> > (len=0xbf8d5d60) >> >> >>> >> >> > at pfmlib_common.c:916 >> >> >>> >> >> > #2 0x0804dd45 in pfmon_initialize (argv=0xbf8d5e64) at >> >> >>> >> >> > pfmon.c:1469 >> >> >>> >> >> > #3 0x0804eadf in main (argc=1, argv=0xbf8d5e64) at >> >> >>> >> >> > pfmon.c:1900 >> >> >>> >> >> > (gdb) >> >> >>> >> >> >> >> >>> >> >> >> >> >>> >> >> I have seen this problem on an other machine as well. But I >> >> >>> >> >> don't >> >> >>> >> >> remember >> >> >>> >> >> what >> >> >>> >> >> the cause was. It has to do with the event table. >> >> >>> >> >> Could you print the value of i (the event index) so we know >> >> >>> >> >> where >> >> >>> >> >> it >> >> >>> >> >> stops? >> >> >>> >> >> >> >> >>> >> >> > >> >> >>> >> >> > On Thu, Sep 24, 2009 at 3:25 AM, stephane eranian >> >> >>> >> >> > <er...@go...> >> >> >>> >> >> > wrote: >> >> >>> >> >> >> >> >> >>> >> >> >> What does ldd pfmon say? >> >> >>> >> >> >> >> >> >>> >> >> >> >> >> >>> >> >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng >> >> >>> >> >> >> <dd...@gm...> >> >> >>> >> >> >> wrote: >> >> >>> >> >> >> > Hello, >> >> >>> >> >> >> > >> >> >>> >> >> >> > I patched the kernel and installed both libpfm and >> >> >>> >> >> >> > perfmon, >> >> >>> >> >> >> > however I >> >> >>> >> >> >> > got >> >> >>> >> >> >> > segmentation fault while I tried running command: "pfmon >> >> >>> >> >> >> > --help'. >> >> >>> >> >> >> > Could >> >> >>> >> >> >> > anyone help me to figure it out please? >> >> >>> >> >> >> > >> >> >>> >> >> >> > I am running Ubuntu 9.04 on kernel 2.6.29. I downloaded >> >> >>> >> >> >> > the >> >> >>> >> >> >> > latest >> >> >>> >> >> >> > version >> >> >>> >> >> >> > of libpfm, perfmon, and the base system patch from the >> >> >>> >> >> >> > sourceforge >> >> >>> >> >> >> > page. >> >> >>> >> >> >> > My >> >> >>> >> >> >> > processor is Intel core i7 920 and I adjusted related >> >> >>> >> >> >> > configuration >> >> >>> >> >> >> > when >> >> >>> >> >> >> > I >> >> >>> >> >> >> > configured the kernel. Following is the debug message >> >> >>> >> >> >> > from >> >> >>> >> >> >> > gdb: >> >> >>> >> >> >> > >> >> >>> >> >> >> > >> >> >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ sudo make >> >> >>> >> >> >> > install >> >> >>> >> >> >> > [sudo] password for qdeng: >> >> >>> >> >> >> > make[1]: Entering directory >> >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> >> >>> >> >> >> > make[2]: Entering directory >> >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> >> >>> >> >> >> > make[2]: Nothing to be done for `all'. >> >> >>> >> >> >> > make[2]: Leaving directory >> >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon/smpl_mod' >> >> >>> >> >> >> > cc -o pfmon pfmon.o pfmon_smpl.o pfmon_util.o >> >> >>> >> >> >> > pfmon_system.o >> >> >>> >> >> >> > pfmon_task.o >> >> >>> >> >> >> > pfmon_symbols.o pfmon_results.o pfmon_hash.o >> >> >>> >> >> >> > pfmon_smpl_dfl.o >> >> >>> >> >> >> > pfmon_os.o >> >> >>> >> >> >> > pfmon_os_v2x.o pfmon_util_x86.o pfmon_i386_p6.o >> >> >>> >> >> >> > pfmon_gen_ia32.o >> >> >>> >> >> >> > pfmon_amd64.o pfmon_core.o pfmon_intel_atom.o >> >> >>> >> >> >> > pfmon_intel_nhm.o >> >> >>> >> >> >> > pfmon_pentium4.o -g -ggdb -Wall -Werror -D_REENTRANT >> >> >>> >> >> >> > -I/usr/local/include >> >> >>> >> >> >> > -DCONFIG_PFMON_I386 -DPFMON_DEBUG >> >> >>> >> >> >> > -DDATADIR=\"/usr/local/share/pfmon\" >> >> >>> >> >> >> > -I. >> >> >>> >> >> >> > -I/usr/include/libelf -D_GNU_SOURCE -DPFMON_DEBUG -g >> >> >>> >> >> >> > smpl_mod/libsmplfmt.a >> >> >>> >> >> >> > -lpthread -lm -lrt -Wl,-Bstatic -lelf -Wl,-Bdynamic >> >> >>> >> >> >> > -L/usr/local/lib >> >> >>> >> >> >> > -lpfm >> >> >>> >> >> >> > mkdir -p /usr/local/bin >> >> >>> >> >> >> > install -m 755 pfmon /usr/local/bin/pfmon >> >> >>> >> >> >> > ln -sf /usr/local/bin/pfmon /usr/local/bin/pfmon_gen >> >> >>> >> >> >> > make[1]: Leaving directory >> >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/pfmon' >> >> >>> >> >> >> > make[1]: Entering directory >> >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> >> >>> >> >> >> > mkdir -p /usr/local/bin >> >> >>> >> >> >> > install -m 755 pfdbg /usr/local/bin/pfdbg >> >> >>> >> >> >> > make[1]: Leaving directory >> >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/tests' >> >> >>> >> >> >> > make[1]: Entering directory >> >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> >> >>> >> >> >> > mkdir -p /usr/local/share/man/man1 >> >> >>> >> >> >> > install -m 644 pfmon.1 /usr/local/share/man/man1 >> >> >>> >> >> >> > make[1]: Leaving directory >> >> >>> >> >> >> > `/home/qdeng/pmu/perfmon2/pfmon-3.9/docs' >> >> >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ pfmon >> >> >>> >> >> >> > --help >> >> >>> >> >> >> > Segmentation fault >> >> >>> >> >> >> > qdeng@qdeng-desktop:~/pmu/perfmon2/pfmon-3.9$ gdb pfmon >> >> >>> >> >> >> > GNU gdb 6.8-debian >> >> >>> >> >> >> > 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 "i486-linux-gnu"... >> >> >>> >> >> >> > (gdb) run --help >> >> >>> >> >> >> > Starting program: /usr/local/bin/pfmon --help >> >> >>> >> >> >> > [Thread debugging using libthread_db enabled] >> >> >>> >> >> >> > [New Thread 0xb7e598d0 (LWP 4437)] >> >> >>> >> >> >> > >> >> >>> >> >> >> > Program received signal SIGSEGV, Segmentation fault. >> >> >>> >> >> >> > [Switching to Thread 0xb7e598d0 (LWP 4437)] >> >> >>> >> >> >> > 0xb7ed1613 in strlen () from >> >> >>> >> >> >> > /lib/tls/i686/cmov/libc.so.6 >> >> >>> >> >> >> > (gdb) >> >> >>> >> >> >> > >> >> >>> >> >> >> > Thanks! >> >> >>> >> >> >> > Qingyuan >> >> >>> >> >> >> > >> >> >>> >> >> >> > >> >> >>> >> >> >> > >> >> >>> >> >> >> > >> >> >>> >> >> >> > >> >> >>> >> >> >> > >> >> >>> >> >> >> > >> >> >>> >> >> >> > ------------------------------------------------------------------------------ >> >> >>> >> >> >> > Come build with us! The BlackBerry® Developer >> >> >>> >> >> >> > Conference >> >> >>> >> >> >> > in >> >> >>> >> >> >> > SF, >> >> >>> >> >> >> > CA >> >> >>> >> >> >> > is the only developer event you need to attend this >> >> >>> >> >> >> > year. >> >> >>> >> >> >> > Jumpstart >> >> >>> >> >> >> > your >> >> >>> >> >> >> > developing skills, take BlackBerry mobile applications >> >> >>> >> >> >> > to >> >> >>> >> >> >> > market >> >> >>> >> >> >> > and >> >> >>> >> >> >> > stay >> >> >>> >> >> >> > ahead of the curve. Join us from November 9-12, >> >> >>> >> >> >> > 2009. >> >> >>> >> >> >> > Register >> >> >>> >> >> >> > now! >> >> >>> >> >> >> > http://p.sf.net/sfu/devconf >> >> >>> >> >> >> > _______________________________________________ >> >> >>> >> >> >> > perfmon2-devel mailing list >> >> >>> >> >> >> > per...@li... >> >> >>> >> >> >> > >> >> >>> >> >> >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel >> >> >>> >> >> >> > >> >> >>> >> >> >> > >> >> >>> >> >> > >> >> >>> >> >> > >> >> >>> >> > >> >> >>> >> > >> >> >>> > >> >> >>> > >> >> >> >> >> > >> >> > >> > >> > > > |