vmprof-python icon indicating copy to clipboard operation
vmprof-python copied to clipboard

Writing profiles fails with negative addresses

Open mattip opened this issue 3 months ago • 0 comments

On 32-bit linux I am seeing a failure when trying to run the PyPy test test_vmprof_greenlet.py

import time
import pytest
vmprof = pytest.importorskip('vmprof')
greenlet = pytest.importorskip('greenlet')

def count_samples(filename):
    stats = vmprof.read_profile(filename)
    return len(stats.profiles)

def cpuburn(duration):
    end = time.time() + duration
    while time.time() < end:
        pass

def test_sampling_inside_callback(tmpdir):
    # see also test_sampling_inside_callback inside
    # pypy/module/_continuation/test/test_stacklet.py
    #
    G = greenlet.greenlet(cpuburn)
    fname = tmpdir.join('log.vmprof')
    with fname.open('w+b') as f:
        vmprof.enable(f.fileno(), 1/250.0)
        G.switch(0.1)
        vmprof.disable()

    samples = count_samples(str(fname))
    # 0.1 seconds at 250Hz should be 25 samples
    assert 23 < samples < 27

The failure is in reader.py where it tries to pack an address which could be negative using "P" https://github.com/vmprof/vmprof-python/blob/fccf70818847a07cfec8750178bd26d6da7e901f/vmprof/reader.py#L342

mattip avatar Sep 28 '25 09:09 mattip