aboutsummaryrefslogtreecommitdiff
path: root/libpager/pager-memcpy.c
diff options
context:
space:
mode:
authorJustus Winter <justus@gnupg.org>2017-06-19 21:20:57 +0200
committerJustus Winter <justus@gnupg.org>2017-08-05 18:42:22 +0200
commit835b293d35a209d38047126443d41fa7090daa4c (patch)
tree5bf956895e6030f91cd618fb191b2151f6d25423 /libpager/pager-memcpy.c
parentdc0b5a43224999223a246870912b0f292b1980e9 (diff)
downloadhurd-835b293d35a209d38047126443d41fa7090daa4c.tar.gz
hurd-835b293d35a209d38047126443d41fa7090daa4c.tar.bz2
hurd-835b293d35a209d38047126443d41fa7090daa4c.zip
Use our own variant of 'assert' and 'assert_perror'.
Our variants print stack traces on failures. This will make locating errors much easier.
Diffstat (limited to 'libpager/pager-memcpy.c')
-rw-r--r--libpager/pager-memcpy.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/libpager/pager-memcpy.c b/libpager/pager-memcpy.c
index f98b0497..12515933 100644
--- a/libpager/pager-memcpy.c
+++ b/libpager/pager-memcpy.c
@@ -20,7 +20,7 @@
#include "pager.h"
#include <sys/mman.h>
#include <hurd/sigpreempt.h>
-#include <assert.h>
+#include <assert-backtrace.h>
#include <string.h>
/* Start using vm_copy over memcpy when we have that many page. This is
@@ -50,9 +50,9 @@ pager_memcpy (struct pager *pager, memory_object_t memobj,
error_t do_vm_copy (void)
{
- assert ((offset & (vm_page_size - 1)) == 0);
- assert (((vm_address_t) other & (vm_page_size - 1)) == 0);
- assert (n >= vm_page_size);
+ assert_backtrace ((offset & (vm_page_size - 1)) == 0);
+ assert_backtrace (((vm_address_t) other & (vm_page_size - 1)) == 0);
+ assert_backtrace (n >= vm_page_size);
do
{
@@ -61,8 +61,8 @@ pager_memcpy (struct pager *pager, memory_object_t memobj,
? (n - (n & (vm_page_size - 1)))
: VMCOPY_WINDOW_DEFAULT_SIZE;
- assert (window_size >= VMCOPY_BETTER_THAN_MEMCPY);
- assert ((window_size & (vm_page_size - 1)) == 0);
+ assert_backtrace (window_size >= VMCOPY_BETTER_THAN_MEMCPY);
+ assert_backtrace ((window_size & (vm_page_size - 1)) == 0);
window = 0;
err = vm_map (mach_task_self (), &window, window_size, 0, 1,
@@ -135,8 +135,8 @@ pager_memcpy (struct pager *pager, memory_object_t memobj,
to_copy -= copy_count;
n -= copy_count;
- assert (n >= 0);
- assert (to_copy >= 0);
+ assert_backtrace (n >= 0);
+ assert_backtrace (to_copy >= 0);
}
while (to_copy > 0);
@@ -157,14 +157,14 @@ pager_memcpy (struct pager *pager, memory_object_t memobj,
if (err)
return err;
- assert (n >= VMCOPY_BETTER_THAN_MEMCPY);
+ assert_backtrace (n >= VMCOPY_BETTER_THAN_MEMCPY);
err = do_vm_copy ();
if (err || n == 0)
/* We failed or we finished. */
return err;
- assert (n < VMCOPY_BETTER_THAN_MEMCPY);
+ assert_backtrace (n < VMCOPY_BETTER_THAN_MEMCPY);
}
return do_memcpy (n);
@@ -173,7 +173,7 @@ pager_memcpy (struct pager *pager, memory_object_t memobj,
jmp_buf buf;
void fault (int signo, long int sigcode, struct sigcontext *scp)
{
- assert (scp->sc_error == EKERN_MEMORY_ERROR);
+ assert_backtrace (scp->sc_error == EKERN_MEMORY_ERROR);
err = pager_get_error (pager, sigcode - window + offset);
n -= sigcode - window;
vm_deallocate (mach_task_self (), window, window_size);
@@ -199,7 +199,7 @@ pager_memcpy (struct pager *pager, memory_object_t memobj,
return err;
}
- assert (n < VMCOPY_BETTER_THAN_MEMCPY);
+ assert_backtrace (n < VMCOPY_BETTER_THAN_MEMCPY);
}
/* Need to do it the hard way. */
@@ -213,7 +213,7 @@ pager_memcpy (struct pager *pager, memory_object_t memobj,
&do_copy, (sighandler_t) &fault);
if (! err)
- assert (n == 0);
+ assert_backtrace (n == 0);
*size -= n;