diff --git a/gdb-port/tests/integration/test_stack_frame_parser_context.py b/gdb-port/tests/integration/test_stack_frame_parser_context.py
index e41f6dbe3c5fa2f43e2f150637fdfd26f882e858..59e3abe10ad0672b799f40906b8389119629f5c6 100644
--- a/gdb-port/tests/integration/test_stack_frame_parser_context.py
+++ b/gdb-port/tests/integration/test_stack_frame_parser_context.py
@@ -46,6 +46,13 @@ class TestParserContextWhenReturningFromStackFrames(unittest.TestCase):
 	def setUp(self):
 		self.a = Parser("a", 128)
 		self.b = Parser("b", 32)
+		self.harena_t = gdb.lookup_type("HArena")
+		self.arena = gdb.parse_and_eval("malloc(sizeof(HArena))").cast(self.harena_t.pointer()).dereference() # Quick and dirty way to allocate something in the process GDB is debugging (the inferior)
+		self.hps_t = gdb.lookup_type("HParseState")
+		self.test_parse_state = gdb.parse_and_eval("malloc(sizeof(HParseState))").cast(self.hps_t.pointer()).dereference()
+		# TODO: make this independent of endianness and pointer size
+		gdb.selected_inferior().write_memory(int(self.test_parse_state.address)+(self.hps_t['arena'].bitpos//8), int(self.arena.address).to_bytes(8, 'little')) # horrible, horrible way to set the 
+		self.hps_t = self.test_parse_state.address.dereference() # "refresh" the gdb.Value, since the effects of .write_memory() don't seem to show up
 		self.top_level_parse = TopLevelParse()
 		self.top_level_parse.parser_objs[32] = self.b
 		self.top_level_parse.parser_objs[128] = self.a
@@ -55,10 +62,10 @@ class TestParserContextWhenReturningFromStackFrames(unittest.TestCase):
 		self.top_level_parse.enter_h_packrat_parse(self.a.address)
 
 		#TODO: are we initializing from scratch for every test?
-		self.top_level_parse.enter_h_do_parse(400, 256, self.a.address)
+		self.top_level_parse.enter_h_do_parse(self.test_parse_state.address, self.arena.address, self.a.address)
 		self.top_level_parse.parse_virtual(self.a.address)
 		self.top_level_parse.enter_perform_lowlevel_parse(self.a.address)
-		self.top_level_parse.enter_h_do_parse(400, 256, self.b.address)
+		self.top_level_parse.enter_h_do_parse(self.test_parse_state.address, self.arena.address, self.b.address)
 		self.top_level_parse.parse_virtual(self.b.address)
 		self.top_level_parse.enter_perform_lowlevel_parse(self.b.address)
 
@@ -68,8 +75,9 @@ class TestParserContextWhenReturningFromStackFrames(unittest.TestCase):
 
 	def test_after_return_from_h_do_parse(self):
 		hps_t = gdb.lookup_type("HParseState")
-		test_parse_state = gdb.Value(b'\x00'*80, hps_t)
+		#test_parse_state = gdb.Value(b'\x00'*80, hps_t)
+		test_parse_state = gdb.parse_and_eval("malloc(sizeof(HParseState))").cast(hps_t.pointer()).dereference()
 
 		self.top_level_parse.return_from_perform_lowlevel_parse()
-		self.top_level_parse.return_from_h_do_parse(test_parse_state, self.b.address, 0)
+		self.top_level_parse.return_from_h_do_parse(self.test_parse_state.address, self.b.address, 0)
 		self.assertIs(self.top_level_parse.peek_parser(), self.a)