• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

gap-system / gap / 9024 / 2
4%
master: 4%

Build:
DEFAULT BRANCH: master
Ran 23 Jan 2019 01:22AM UTC
Files 637
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Jan 2019 10:55PM UTC coverage: 76.282% (-0.006%) from 76.288%
TEST_SUITES="docomp testtravis" ABI=32 CONFIGFLAGS=""

push

travis-ci

fingolfin
GAP_Enter/Leave macros to bracket use of libgap and stack local GAP objects in
code which embeds libgap

There are two parts to this:

First, the outer-most GAP_Enter() must set the StackBottom variable for GASMAN,
without which objects tracked by GASMAN that are allocated on the stack are
properly tracked (see #3089).

Second, the outer-most GAP_Enter() call should set a jump point for longjmps to
STATE(ReadJmpError).  Code within the GAP kernel may reset this, but we should
set it here in case any unexpected errors occur within the GAP kernel that are
not already handled appropriately by a TRY_IF_NO_ERROR.  Or, more precisely,
since TRY_IF_NO_ERROR does not currently *clear* the jump buffer it sets even
when leaving the block without any errors found, a subsequent error that is not
within a TRY_IF_NO_ERROR block can still result in a jump to the last
TRY_IF_NO_ERROR block which was entered, which can be quite arbitrary (e.g.
inside IntializeGap).

For the first issue, we add GAP_EnterStack() and GAP_LeaveStack() macros which
implement *just* the StackBottom handling without any other error handling.  We
also add a function to gasman.c called SetStackBottomBags which just updates
the StackBottom variable.  Then the GAP_EnterStack() macro can be used within a
function to set StackBottom to somewhere at or near the beginning of that
function's stack frame.  This uses GCC's __builtin_frame_address, but supported
is probably needed for other platforms that don't have this.

The global variable EnterStackCount in libgap-api.c is used to track recursive
calls into GAP_EnterStack().  We only want to set StackBottom on the outer-most
call.  The count is decremented on GAP_LeaveStack().

For setting the STATE(ReadJmpError) jump buffer we provide a macro called
GAP_Error_Setjmp() which is fairly straightforward, except that it needs to be
written in such a way that it can be used in concert correctly with
GAP_EnterStack().  In particular, if returning to the s... (continued)

228151 of 299087 relevant lines covered (76.28%)

2290296.46 hits per line

Source Files on job 9024.2 (TEST_SUITES="docomp testtravis" ABI=32 CONFIGFLAGS="")
  • Tree
  • List 0
  • Changed 65
  • Source Changed 3
  • Coverage Changed 65
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 1426
  • Travis Job 9024.2
  • e868e291 on github
  • Prev Job for TEST_SUITES="docomp testtravis" ABI=32 CONFIGFLAGS="" on master (#9022.2)
  • Next Job for TEST_SUITES="docomp testtravis" ABI=32 CONFIGFLAGS="" on master (#9033.2)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc