Thank you! I will try your configuration.

On Thu, Sep 24, 2009 at 5:26 PM, stephane eranian <eranian@googlemail.com> wrote:
On Thu, Sep 24, 2009 at 11:24 PM, Qingyuan Deng <ddqqyy@gmail.com> 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 <eranian@googlemail.com>
> wrote:
>>
>> On Thu, Sep 24, 2009 at 11:14 PM, Qingyuan Deng <ddqqyy@gmail.com> 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 <ddqqyy@gmail.com> 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
>> >> <eranian@googlemail.com>
>> >> wrote:
>> >>>
>> >>> What is you try to compile libpfm with OPTIM=-O0?
>> >>>
>> >>>
>> >>> On Thu, Sep 24, 2009 at 10:22 PM, Qingyuan Deng <ddqqyy@gmail.com>
>> >>> 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
>> >>> > <eranian@googlemail.com>
>> >>> > 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 <ddqqyy@gmail.com>
>> >>> >> 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
>> >>> >> > <eranian@googlemail.com>
>> >>> >> > wrote:
>> >>> >> >>
>> >>> >> >> On Thu, Sep 24, 2009 at 9:29 AM, Qingyuan Deng
>> >>> >> >> <ddqqyy@gmail.com>
>> >>> >> >> 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
>> >>> >> >> > <eranian@googlemail.com>
>> >>> >> >> > wrote:
>> >>> >> >> >>
>> >>> >> >> >> What does ldd pfmon say?
>> >>> >> >> >>
>> >>> >> >> >>
>> >>> >> >> >> On Thu, Sep 24, 2009 at 9:01 AM, Qingyuan Deng
>> >>> >> >> >> <ddqqyy@gmail.com>
>> >>> >> >> >> 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&reg; 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&#45;12, 2009.
>> >>> >> >> >> > Register
>> >>> >> >> >> > now&#33;
>> >>> >> >> >> > http://p.sf.net/sfu/devconf
>> >>> >> >> >> > _______________________________________________
>> >>> >> >> >> > perfmon2-devel mailing list
>> >>> >> >> >> > perfmon2-devel@lists.sourceforge.net
>> >>> >> >> >> > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel
>> >>> >> >> >> >
>> >>> >> >> >> >
>> >>> >> >> >
>> >>> >> >> >
>> >>> >> >
>> >>> >> >
>> >>> >
>> >>> >
>> >>
>> >
>> >
>
>