Re: [perfmon2] segmentation fault while running pfmon
Status: Beta
Brought to you by:
seranian
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 > >> >>> >> >> >> > > >> >>> >> >> >> > > >> >>> >> >> > > >> >>> >> >> > > >> >>> >> > > >> >>> >> > > >> >>> > > >> >>> > > >> >> > >> > > >> > > > > > > |