Open GoogleCodeExporter opened 9 years ago
Cannot access the attachment in BugZilla. Getting authorization error. Other
than that, you seem to be right, the function names seems to be replaces by the
exception names, will try to reproduce the issue with a more simple test case.
Original comment by sum...@gmail.com
on 5 May 2014 at 9:48
More info: profiling newer version of the application on Python 2.7 and
generating reports on Python 2.7, I cannot reproduce this issue.
Original comment by nir...@gmail.com
on 5 May 2014 at 10:03
The profile data not reachable from bugzilla.
Original comment by nir...@gmail.com
on 5 May 2014 at 10:08
Attachments:
According to newer profiles on Python 2.7, the correct functions that should
show instead of VolumeIsBusy and VolumeDoesNotExist are
vdsm/storage/misc.py:209(readfile) and vdsm/storage/misc.py:224(readspeed).
Both exceptions are not related to these functions.
One hint about this version of vdsm - it creates ton of short living threads.
So it is possible that threads ids are reused. Looking at yappi code, it seems
that thread is are assumed to be unique.
Another hint, vdsm uses lot of long living threads - in the profile above,
there were at least 40 long living threads, 30 of those are running the code in
the top of the profile. So this may expose incorrect code in yappi that may be
hidden in more sane python code.
So one test I would try is to profile code that creates lot of short living
threads, and the other code that let 100-200 threads run the same code path. It
does not make sense to use such code but it may reveal issue in yappi.
Original comment by nir...@gmail.com
on 5 May 2014 at 10:26
Thanks! Those are great hints. I have tried creating 1000 short living + 40
living threads in Python2.6, could not reproduce the problem.
Yappi relies that the OS thread id's to be unique, however in our case that
seems irrelevant. Our problem simply seems to be a corruption in the internal
functions hash table where we hold the correct call count/timing information
but bad function name. I am not sure how can this be achieved, need to inspect
more.
Parallely, can you provide following:
- Do you get this corruption also when you save the results as YSTAT, not
PSTAT? Or more simply can you try running yappi.get_func_stats().print_all()
where you save the stats to see if it causes any difference?
- Is it possible I run vsdm on my local computer? I need RHEL, I believe?
- Can you also try to see if the error changes if you insert some other dummy
threads to the application? If inserting few dummy threads change the nature of
the problem, then this means corruption is random. Otherwise, I will be
suspecting there is a difference on the handling of Exceptions on Python2.6?
Original comment by sum...@gmail.com
on 6 May 2014 at 7:56
I am also attaching the test app I used. You can also freely change/play with
some values to mimic vsdm. In the end, you know better:)
Original comment by sum...@gmail.com
on 6 May 2014 at 7:57
Attachments:
- Do you get this corruption also when you save the results as YSTAT, not PSTAT?
I cannot try that, since the profile with this issue was taken on a customer
machine which we don't have access too. I'll try this when I can reproduce this
issue on my setup.
- Is it possible I run vsdm on my local computer?
Sure, it runs on RHEL, CentOS and Fedora (19, 20). Centos would be the best
option
since it is similar to the RHEL system we took the corrupted profile, and use
the same python version.
However setting up ovirt and vdsm for simulation of this issue is little
complicated,
so I would not waste your time on this.
- Can you also try to see if the error changes if you insert some other dummy
threads?
I will try it when I can reproduce it on my setup.
Original comment by nir...@gmail.com
on 6 May 2014 at 9:51
Original comment by sum...@gmail.com
on 13 May 2014 at 7:26
Original comment by sum...@gmail.com
on 13 May 2014 at 7:26
Original issue reported on code.google.com by
nir...@gmail.com
on 1 May 2014 at 9:56