Skip to content

Conversation

@rptb1
Copy link
Member

@rptb1 rptb1 commented Jan 14, 2023

Attempting to resolve #106

@rptb1 rptb1 self-assigned this Jan 14, 2023
@rptb1 rptb1 changed the title Enable MMQA tests in CI Run MMQA tests as part of CI Jan 14, 2023
@rptb1 rptb1 added test Issue with a test case git-migration Project migration from Ravenbrook internal Perforce infrastructure to public git repo optional Will cause failures / of benefit. Worth assigning resources. labels Jan 14, 2023
@rptb1 rptb1 added this to the Perforce Polarity milestone Jan 16, 2023
@rptb1
Copy link
Member Author

rptb1 commented Jan 31, 2023

This is currently failing to pass test function/136.c https://github.com/Ravenbrook/mps/actions/runs/3939501021/jobs/6739430364#step:6:865 . Running this locally, I find an assertion failure here

mps/test/function/136.c

Lines 81 to 86 in ed73ba8

/* Allocate one small object in pool2 so that its CBS gets some
initial memory. */
res = mps_alloc(&p, pool2, 8);
asserts(res == MPS_RES_OK,
"Couldn't allocate first object of size %lu in second pool",
(unsigned long)8);

The test reduces the arena commit limit, but seems to assume that it will be able to allocate an 8-byte object in pool2. This call fails with result code 7, which means it's hitting the commit limit. The test appears to expect to fail to allocate, but only for the "large objects" that it tries next. This seems wrong to me, especially if the commit limit is reached exactly by allocating the descriptors for the pool creations.

@rptb1
Copy link
Member Author

rptb1 commented Jan 31, 2023

Possibly related to #88 but trying function/136.c from that branch does not seem to fix the problem here.

EDIT: Disregard this. I needed to clean.

This makes the test portable to XCA6LL, where the page size (and so
the minimum arena grain size) can be 16 kB.

(cherry picked from commit ff8c9c9)
@rptb1
Copy link
Member Author

rptb1 commented Feb 17, 2023

This is currently failing to pass test function/136.c

There seems to be a sensitive boundary condition. Running

rb@plover:~/git/mps/test$ perl test/qa run function/136.c
...
RESULTS
  assert             =  true
  assert_or_abort    =  true
  asserttext         =
    Couldn't allocate first object of size 8 in second pool
  limit_grains       =  39
  seconds            =  0
CONCLUSION
  PASS

but running

rb@plover:~/git/mps/test$ perl test/qa runset testsets/passing
...
  PASS function/135.c (writeable)
X FAIL function/136.c (writeable)
  PASS function/137.c (writeable)
...

with this in log/full.log:

RESULTS
  assert             =  true
  assert_or_abort    =  true
  asserttext         =
    Couldn't allocate first object of size 8 in second pool
  limit_grains       =  40
  seconds            =  0
CONCLUSION
  FAIL                  failed on limit_grains: wanted < 40, was 40

So it seems that test/qa run and test/qa runset are not equivalent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

git-migration Project migration from Ravenbrook internal Perforce infrastructure to public git repo optional Will cause failures / of benefit. Worth assigning resources. test Issue with a test case

Projects

Development

Successfully merging this pull request may close these issues.

CI does not exercise the MMQA test suite

4 participants