Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot build cosmopolitan.a #288

Closed
Keithcat1 opened this issue Oct 12, 2021 · 3 comments
Closed

Cannot build cosmopolitan.a #288

Keithcat1 opened this issue Oct 12, 2021 · 3 comments
Assignees

Comments

@Keithcat1
Copy link

I can no longer build cosmopolitan.a using WSL on the latest commits, I get the error:
Timed out after 64 seconds!

@pkulchenko
Copy link
Collaborator

@Keithcat1, what's the command you are using to build it?

@jart
Copy link
Owner

jart commented Oct 13, 2021

It looks like the command line for ar.com to build cosmopolitan.a is now 509kb. So chances are we're brushing up against whatever ARG_MAX is under WSL. This can be fixed right now by locally modifying to say:

o/$(MODE)/cosmopolitan.a: $(foreach x,$(COSMOPOLITAN_OBJECTS),$($(x)_A_OBJS))
        $(file >[email protected]) $(foreach x,$^,$(file >>[email protected],$(x)))
        @$(COMPILE) -AARCHIVE -T$@ $(AR) $(ARFLAGS) $@ @[email protected]

I'll do that in a follow-up change shortly.

@jart jart self-assigned this Oct 13, 2021
jart added a commit that referenced this issue Oct 14, 2021
This commit makes numerous refinements to cosmopolitan memory handling.

The default stack size has been reduced from 2mb to 128kb. A new macro
is now provided so you can easily reconfigure the stack size to be any
value you want. Work around the breaking change by adding to your main:

    STATIC_STACK_SIZE(0x00200000);  // 2mb stack

If you're not sure how much stack you need, then you can use:

    STATIC_YOINK("stack_usage_logging");

After which you can `sort -nr o/$MODE/stack.log`. Based on the unit test
suite, nothing in the Cosmopolitan repository (except for Python) needs
a stack size greater than 30kb. There are also new macros for detecting
the size and address of the stack at runtime, e.g. GetStackAddr(). We
also now support sigaltstack() so if you want to see nice looking crash
reports whenever a stack overflow happens, you can put this in main():

    ShowCrashReports();

Under `make MODE=dbg` and `make MODE=asan` the unit testing framework
will now automatically print backtraces of memory allocations when
things like memory leaks happen. Bugs are now fixed in ASAN global
variable overrun detection. The memtrack and asan runtimes also handle
edge cases now. The new tools helped to identify a few memory leaks,
which are fixed by this change.

This change should fix an issue reported in #288 with ARG_MAX limits.
Fixing this doubled the performance of MKDEPS.COM and AR.COM yet again.
@jart
Copy link
Owner

jart commented Oct 14, 2021

OK I believe this is fixed. If it isn't, let us know and I'll reopen!

@jart jart closed this as completed Oct 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants