On Wed, Nov 4, 2015 at 9:06 AM, William Cohen <wco...@redhat.com> wrote:
> On 11/03/2015 11:01 PM, Stephane Eranian wrote: > > Will, > > > > On Tue, Nov 3, 2015 at 10:12 PM, William Cohen <wco...@redhat.com > <mailto:wco...@redhat.com>> wrote: > > > > On 11/03/2015 01:41 PM, Stephane Eranian wrote: > > > Will, > > > > > > Could you provide the list of events detected by libpfm4? > > > You need to run as root: sudo examples/showevtinfo -L > > > Clearly the ubo uncore event should not be processed as part of > tracepoints. > > > > Hi Stephane, > > > > The count of the number of elements in the array was not be reset > when the static array was being reset. Attached is a patch that addresses > the problem. It allows the PAPI fmultiplex1 test to run correctly when the > tracepoints are being read in multiple times. > > > > I don't understand why this patch fixes the problem. perf_nevents > (perf_event_support.pme_count) > > is statically initialized. By the time you get to pfm_perf_init() it > still holds that initial value which is > > what you are setting it. Why would that help? > > > > > > -Will > > > > > > Hi Stephane, > > In the papi fmultiplex1.F test the initialization is being done multiple > times. The initialization sets perf_pe to perf_static_events. However, > when the test is run as root the array is cloned and the number of entries > in the array is increased. The pme_count field in perf_event_support is > changed when the additional tracepoints are added to the cloned array. The > changes in the pme_count are caused by the "perf_nevents++" in the code. > It is kind of hidden by the perf_nevents macro. You can see the changes to > pme_count in gdb with a hardware watch point with the following gdb command: > > But pfm_inittialize() does not do the initialization twice if you call it twice. The initdone flag is set. And then last week, I added something else to cache the return value. So how do you get into a situation where the initialization is done multiple times. > watch perf_event_support.pme_count > > When done the pme_count field no longer has the original count of elements > in perf_static_events. If the initialization is run again without this > patch, the number of entries in the array is listed number of entries in > the static array AND the tracepoint entries. The cloning process for the > reinitialization gets things very wrong copying past the end of the > perf_static_events array and the test crashes. The supplied patch ensures > that if the initialization is run multiple times that it will get the > correct number of entries in the static array. > > This problem may not have been noticeable because it only occurs when the > initialization is being done as root and the initialization is being done > multiple times. > > Yes, tracepoints are only accessible to root. But again, how do you end up calling the init multiple times and pfm_initialize() does not return immediately.
------------------------------------------------------------------------------
_______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel