-
Notifications
You must be signed in to change notification settings - Fork 44
Merge develop to 409 #837
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
Merged
Merged
Merge develop to 409 #837
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
`u3k()` / `u3a_gain()` asserts that a noun reference is not `u3_none`, while `u3z()` / `u3a_lose()` does not. Neither needs -- they will both safely no-op given `u3_none` (due to the `..._is_normal()` conditions inside their implementation functions). The inconsistency here makes for inconsistent code -- the presence of `u3z(u3_none)` may indicate misconceived refcount handling. This PR does not resolve the overall issue. It just corrects a couple cases by removing unneeded refcount operations and notes another.
Currently, if Nock bytecode interpreter executes an autocons and does not need the subject to be left on top of the stack (e.g. tail position), it would delay losing it after running both the head and the tail formulas, and only lose them when consing the results. This PR reduces the memory usage by allowing the tail formula to consume the subject if it is not needed, losing it sooner.
This PR fixes a longstanding bug in hashtable road promotion, wherein null slots in table root struct would dereferenced as posts and reallocated, causing unnecessary "traversal" and extra, unused memory allocation.
These changes were developed on top of #812, as part of a(nother) failed effort to develop leak-free unification of senior memory. But they stand alone, and deserve separate review. This PR fixes a bug wherein deeper addresses were not preferred when unifying two nouns on the same road. It also optimizes the unification implementation by using separate functions for normal and senior unification and removing branches. Finally, it enables home-road unification when the current road is the home road and there are no child roads, and adds basic unit tests for these scenarios.
Reverts #827 This PR causes an instant segfault in the serf after upgrading on `~dinleb-rambep`, `~norsyr-torryn` and probably all pre-existing ships. The segfault has the following stacktrace: ``` urbit 3.4-0969b6de10 boot: home is /root/dinleb-rambep disk: loaded epoch 0i575532513 loom: mapped 2048MB boot: protected loom live: mapped: GB/1.945.878.528 live: loaded: KB/16.384 boot: installed 1362 jets loom: image backup complete disk: created epoch 575532513 loom: mapped 2048MB lite: arvo formula 4ce68411 lite: core 641296f lite: final state 641296f disk: loaded epoch 0i575532513 loom: mapped 2048MB boot: protected loom live: mapped: GB/1.945.878.528 live: loaded: KB/16.384 boot: installed 1362 jets vere: checking version compatibility loom: external fault: 0 (0x200000000 : 0x280000000) Breakpoint 1, u3m_fault (adr_v=0x0, ser_i=<optimized out>) at pkg/noun/manage.c:1967 1967 pkg/noun/manage.c: No such file or directory. (gdb) bt #0 u3m_fault (adr_v=0x0, ser_i=<optimized out>) at pkg/noun/manage.c:1967 #1 0x00000000014b9544 in sigsegv_handler (sig=<optimized out>, sip=<optimized out>, ucp=0x1840b40 <Sigstk+6896>) at /home/runner/.cache/zig/p/N-V-__8AAHQhHwCCMyKUtQhO0AMsY182In-wQIwXVhenOql5/src/handler-unix.c:269 #2 <signal handler called> #3 _n_burn (pog_u=0x1ffffe121ffffe5a, bus=<optimized out>, mov=1 '\001', off=-1 '\377') at pkg/noun/nock.c:2100 #4 0x0000000001273653 in _n_burn_out (bus=1950065936, pog_u=0x1fffffff4) at pkg/noun/nock.c:2814 #5 _n_burn_on (bus=1950065936, bus@entry=3460980861, fol=<optimized out>) at pkg/noun/nock.c:2837 #6 u3n_nock_on (bus=1950065936, bus@entry=3460980861, fol=<optimized out>) at pkg/noun/nock.c:2851 #7 0x0000000001271938 in u3v_poke_raw (sam=50403342) at pkg/noun/vortex.c:293 #8 u3v_poke (ovo=ovo@entry=3459182210) at pkg/noun/vortex.c:285 #9 0x0000000001262948 in u3m_soft_top (mil_w=mil_w@entry=0, pad_w=pad_w@entry=1048576, fun_f=0x12718d0 <u3v_poke>, arg=3459182210) at pkg/noun/manage.c:1311 #10 0x00000000012630ad in u3m_soft (mil_w=4294967284, mil_w@entry=0, fun_f=0x1d0ee947, arg=1950064560) at pkg/noun/manage.c:1577 #11 0x000000000161888d in _serf_poke (sef_u=<optimized out>, cap_c=<optimized out>, mil_w=0, job=job@entry=3455400141) at pkg/vere/serf.c:556 #12 0x0000000001617804 in _serf_work (sef_u=0x183ec20 <u3V>, mil_w=0, job=3455400141) at pkg/vere/serf.c:604 #13 u3_serf_work (sef_u=sef_u@entry=0x183ec20 <u3V>, mil_w=mil_w@entry=0, job=3455400141) at pkg/vere/serf.c:692 #14 0x0000000001618666 in u3_serf_writ (sef_u=0x183ec20 <u3V>, wit=3462698097, pel=pel@entry=0x7fffffff9a0c) at pkg/vere/serf.c:1160 #15 0x000000000126141d in _cw_serf_writ (vod_p=<optimized out>, len_d=113, byt_y=0x7ffff7ff8780 "\001\377\356Mn\235\001\b") at pkg/vere/main.c:1079 #16 0x00000000014ddf08 in _newt_meat_poke (mot_u=0x183ed90 <inn_u>, met_u=0x7ffff7ff8770) at pkg/vere/newt.c:62 #17 _newt_meat_next_sync (mot_u=0x183ed90 <inn_u>) at pkg/vere/newt.c:75 #18 _newt_read_sync_cb (str_u=0x183ed90 <inn_u>, len_i=<optimized out>, buf_u=<optimized out>) at pkg/vere/newt.c:236 #19 0x00000000014ccfe7 in uv__read (stream=0x183ed90 <inn_u>) at /home/runner/.cache/zig/p/N-V-__8AAH34QwB6wi5eQK_lFbfDGSN3hRE8l-6Ep198ZsGg/src/unix/stream.c:1148 #20 uv__stream_io (loop=<optimized out>, w=0x183ee18 <inn_u+136>, events=1) at /home/runner/.cache/zig/p/N-V-__8AAH34QwB6wi5eQK_lFbfDGSN3hRE8l-6Ep198ZsGg/src/unix/stream.c:1208 #21 0x00000000014c6b94 in uv__io_poll (loop=loop@entry=0x1864148 <default_loop_struct>, timeout=-1) at /home/runner/.cache/zig/p/N-V-__8AAH34QwB6wi5eQK_lFbfDGSN3hRE8l-6Ep198ZsGg/src/unix/linux.c:1565 #22 0x00000000014c31f1 in uv_run (loop=loop@entry=0x1864148 <default_loop_struct>, mode=mode@entry=UV_RUN_DEFAULT) at /home/runner/.cache/zig/p/N-V-__8AAH34QwB6wi5eQK_lFbfDGSN3hRE8l-6Ep198ZsGg/src/unix/core.c:460 #23 0x000000000125e791 in _cw_serf_commence (argc=<optimized out>, argv=<optimized out>) at pkg/vere/main.c:1299 #24 _cw_utils (argc=argc@entry=11, argv=argv@entry=0x7fffffffdf08) at pkg/vere/main.c:3250 #25 0x000000000125c7d9 in main (argc=11, argv=0x7fffffffdf08) at pkg/vere/main.c:3275 ``` @Quodss @joemfb
…on we crash before running `+veri:dawn`
Added Check of +.feed to make sure its a cell, if its a cell and a moon we crash before running `+veri:dawn` Resolves #818
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.