#1829: Recent changes impeded building and testing on smaller boxes
---------------------+------------------------------------------------------
Reporter: jkeenan | Owner:
Type: bug | Status: reopened
Priority: normal | Milestone:
Component: build | Version: 2.8.0
Severity: medium | Resolution:
Keywords: | Lang:
Patch: | Platform:
---------------------+------------------------------------------------------
Changes (by jkeenan):
* cc: cotto, bacek (added)
Comment:
Replying to [comment:5 jkeenan]:
This morning I reported that after upping to get
''config/gen/platform/darwin/sysmem.c'', I was getting thie error:
{{{
> src/string/api.c:702: failed assertion 'encoding'
> make: *** [runtime/parrot/include/config.fpmc] Error 134
}}}
I also reported that earlier in the build, I got this warning:
{{{
> config/gen/platform/darwin/sysmem.c:38: warning: no previous prototype
> for 'Parrot_sysmem_amount'
}}}
I didn't know whether the latter was related to the former.
I'm now persuaded that there is a connection. First, I am '''not'''
getting any `no previous prototype` warning in this part of my build log
on Linux/i386.
Second, I've had a closer look at the code cited in the failure message on
Darwin. Here is the relevant part of ''src/string/api.c'':
{{{
695 PARROT_EXPORT
696 PARROT_WARN_UNUSED_RESULT
697 PARROT_CANNOT_RETURN_NULL
698 STRING *
699 Parrot_str_new_init(PARROT_INTERP, ARGIN_NULLOK(const char *buffer),
UINTVAL len,
700 ARGIN(const STR_VTABLE *encoding), UINTVAL flags)
701 {
702 ASSERT_ARGS(Parrot_str_new_init)
703 DECL_CONST_CAST;
704 STRING * const s = Parrot_gc_new_string_header(interp, flags);
705 s->encoding = encoding;
706
707 if (flags & PObj_external_FLAG) {
}}}
Note that line 702 is the start of a function block which contains a call
to `Parrot_gc_new_string_header` -- a GC-related function.
Here's the definition of `Parrot_gc_new_string_header` in
''src/gc/api.c'':
{{{
339 PARROT_CANNOT_RETURN_NULL
340 PARROT_WARN_UNUSED_RESULT
341 STRING *
342 Parrot_gc_new_string_header(PARROT_INTERP, UINTVAL flags)
343 {
344 ASSERT_ARGS(Parrot_gc_new_string_header)
345
346 STRING * const string =
interp->gc_sys->allocate_string_header(interp, flags);
347 if (!string)
348 Parrot_ex_throw_from_c_args(interp, NULL,
EXCEPTION_ALLOCATION_ERROR,
349 "Parrot VM: STRING allocation failed!\n");
350
351 string->strstart = NULL;
352 PObj_get_FLAGS(string) |=
353 flags | PObj_is_string_FLAG | PObj_is_COWable_FLAG;
354
355 return string;
356 }
}}}
Third, as an experiment, in ''src/gc/gc_ms2.c'' on Darwin, I reverted to
the same hack which was enabling me to build on this box over the past two
weeks -- i.e., to the same code that gave Rakudo such headaches on Tuesday
of this week:
{{{
Index: src/gc/gc_ms2.c
===================================================================
--- src/gc/gc_ms2.c (revision 49627)
+++ src/gc/gc_ms2.c (working copy)
@@ -15,7 +15,7 @@
#include "parrot/parrot.h"
#include "parrot/gc_api.h"
#include "parrot/list.h"
-#include "parrot/sysmem.h"
+/*#include "parrot/sysmem.h" */
#include "gc_private.h"
#include "fixed_allocator.h"
@@ -633,7 +633,10 @@
/* Collect every 256M allocated. */
/* Hardcode for now. Will be configured via CLI */
+ /*
self->gc_threshold = Parrot_sysmem_amount(interp) / 8;
+ */
+ self->gc_threshold = 16 * 1024 * 1024;
}
interp->gc_sys->gc_private = self;
}}}
After this reversion, I called `make` and Parrot successfully built.
So I infer that while the various ''config/gen/platform/*/sysmem.c'' files
work on ''generic'', ''win32'', etc.,
''config/gen/platform/darwin/sysmem.c'' is not yet doing what we need it
to do.
Let me add that I don't think this is just my problem. We haven't had
'''any''' smoke reports on Darwin on our smolder server since the 2.9.1
release.
Suggestions?
Thank you very much.
kid51
--
Ticket URL: <https://trac.parrot.org/parrot/ticket/1829#comment:8>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets