chrg6
b0baa981ff
Keep a recording copy that one synchronous submit call gives twice in place both times, instead of cloning the second occurrence as if another thread's submission were in flight.
...
The review of 6a0f123a found that nvn_submit_prepare took the same handle given twice in one nvnQueueSubmitCommands
call for another thread's submission in flight: the first occurrence takes the copy's busy count from 0 to 1 and
resolves in place, so nvn_copy_enter returns 0 for the second, and unless the copy was known to hold no deferred binds
(deferred 1; it is 0 at the first submission and 2 for any copy with deferred binds) the call cloned it, a malloc and
copy of up to 1-2 MiB and a pin walk under copy_lock shared. It also logged "thread N submits the recording ... while
another thread's submission of it is replayed", the line the play-test reads to tell whether F-2-03's remainder
happens in this game at all, so a call that repeats a handle would have given a false positive. The asynchronous path
already keeps such a repeat in place (nvn_submit_prepare_async: used_at != now).
Now runtime/nvn_submit_guard.h nvn_copy_again says whether the handle came earlier in the same call and resolves in
place there; nvn_submit_prepare asks it only after nvn_copy_enter found the copy busy and the copy may hold deferred
binds, so only that branch pays for the scan. Such an occurrence stays in place and keeps its busy count, which
nvn_submit_done leaves per occurrence as before. Another thread that submits the copy meanwhile still takes a clone.
tests/submit_clone_check gives the copy twice in a quarter of its calls (76,759 repeats kept in place in 800,000 calls,
no replay saw its handles change, the counts end at 0) and checks nvn_copy_again step by step: given twice with
nothing else in flight, in place both times; with another submission in flight, cloned both times.
docs/building.md says so.
Not reproduced before the change. Checks that passed: submit_clone_check, pass_cc_check of nvn_api_cmd.c and
nvn_api_core.c with no new -Wall -Wextra warnings.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-13 20:13:02 -05:00
..
2026-11-13 20:12:50 -05:00
2026-11-13 18:43:24 -05:00
2026-11-13 12:54:24 -05:00
2026-11-13 04:37:01 -05:00
2026-11-13 18:41:39 -05:00
2026-11-11 00:39:50 -05:00
2026-11-10 23:16:17 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:38 -05:00
2026-11-12 02:11:46 -05:00
2026-11-10 22:59:02 -05:00
2026-11-09 08:19:19 -05:00
2026-11-07 05:04:40 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 18:41:46 -05:00
2026-11-07 05:04:40 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 18:41:46 -05:00
2026-11-13 18:41:46 -05:00
2026-11-12 22:24:22 -05:00
2026-11-13 18:42:10 -05:00
2026-11-13 06:22:18 -05:00
2026-11-13 06:22:18 -05:00
2026-11-13 18:41:46 -05:00
2026-11-13 03:37:26 -05:00
2026-11-13 09:08:40 -05:00
2026-11-13 20:13:02 -05:00
2026-11-13 06:23:01 -05:00
2026-11-13 18:43:23 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 09:08:40 -05:00
2026-11-13 06:22:18 -05:00
2026-11-08 01:25:12 -05:00
2026-11-09 09:10:36 -05:00
2026-11-13 20:12:26 -05:00
2026-11-13 18:43:24 -05:00
2026-11-13 20:12:26 -05:00
2026-11-07 05:04:38 -05:00
2026-11-09 03:34:46 -05:00
2026-11-12 15:16:30 -05:00
2026-11-13 18:41:39 -05:00
2026-11-13 09:52:43 -05:00
2026-11-13 07:08:49 -05:00
2026-11-13 07:08:49 -05:00
2026-11-07 05:04:40 -05:00
2026-11-09 13:13:43 -05:00
2026-11-09 13:13:43 -05:00
2026-11-11 00:11:41 -05:00
2026-11-13 20:12:26 -05:00
2026-11-13 15:57:52 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 18:42:10 -05:00
2026-11-11 14:06:16 -05:00
2026-11-12 17:41:47 -05:00
2026-11-13 20:12:25 -05:00
2026-11-13 07:55:56 -05:00
2026-11-13 07:55:56 -05:00
2026-11-13 18:41:45 -05:00
2026-11-07 05:04:38 -05:00
2026-11-11 19:38:18 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 18:43:24 -05:00
2026-11-13 20:12:49 -05:00
2026-11-10 23:24:12 -05:00
2026-11-13 18:42:34 -05:00
2026-11-13 20:13:02 -05:00
2026-11-07 05:04:40 -05:00
2026-11-09 08:21:07 -05:00
2026-11-09 08:21:07 -05:00
2026-11-09 08:21:07 -05:00
2026-11-13 06:06:27 -05:00
2026-11-13 06:06:27 -05:00
2026-11-10 12:48:50 -05:00
2026-11-13 06:22:18 -05:00
2026-11-09 03:34:46 -05:00
2026-11-07 05:04:38 -05:00
2026-11-09 03:34:46 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:38 -05:00
2026-11-13 18:42:10 -05:00
2026-11-13 09:52:43 -05:00
2026-11-13 18:41:46 -05:00
2026-11-13 18:41:46 -05:00
2026-11-09 21:54:40 -05:00
2026-11-10 23:16:17 -05:00
2026-11-13 18:43:24 -05:00
2026-11-09 20:48:10 -05:00
2026-11-11 19:38:18 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 20:12:26 -05:00
2026-11-13 07:55:56 -05:00
2026-11-13 07:55:56 -05:00
2026-11-13 06:46:31 -05:00
2026-11-11 04:48:36 -05:00
2026-11-13 20:12:50 -05:00
2026-11-11 00:39:08 -05:00
2026-11-07 09:26:51 -05:00
2026-11-10 23:14:00 -05:00
2026-11-08 15:51:48 -05:00
2026-11-07 05:04:40 -05:00
2026-11-12 16:23:02 +01:00
2026-11-12 16:23:02 +01:00
2026-11-11 05:58:43 -05:00
2026-11-11 19:38:17 -05:00
2026-11-11 05:58:32 -05:00
2026-11-08 15:51:48 -05:00
2026-11-09 08:09:25 -05:00
2026-11-08 15:51:48 -05:00
2026-11-07 05:04:40 -05:00
2026-11-12 14:38:26 -05:00
2026-11-12 12:09:37 -05:00
2026-11-11 02:36:54 -05:00
2026-11-11 00:39:58 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 18:46:50 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:38 -05:00
2026-11-13 20:13:02 -05:00
2026-11-13 20:13:02 -05:00
2026-11-13 20:12:49 -05:00
2026-11-13 20:13:02 -05:00
2026-11-12 12:09:36 -05:00
2026-11-07 05:04:40 -05:00
2026-11-12 12:09:36 -05:00
2026-11-07 05:04:40 -05:00
2026-11-11 19:38:17 -05:00
2026-11-07 05:04:39 -05:00
2026-11-07 05:04:39 -05:00
2026-11-13 20:13:02 -05:00
2026-11-11 19:38:18 -05:00
2026-11-11 19:38:18 -05:00
2026-11-11 19:38:18 -05:00
2026-11-07 05:04:38 -05:00
2026-11-09 08:54:25 -05:00
2026-11-08 15:51:48 -05:00
2026-11-07 05:04:38 -05:00
2026-11-10 22:59:02 -05:00
2026-11-07 13:31:07 -05:00
2026-11-13 00:53:22 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 18:41:46 -05:00
2026-11-07 05:04:40 -05:00
2026-11-09 13:13:43 -05:00
2026-11-09 02:40:51 -05:00
2026-11-12 15:18:25 -05:00
2026-11-09 02:40:51 -05:00
2026-11-13 08:35:42 -05:00
2026-11-13 08:35:42 -05:00
2026-11-12 22:34:22 -05:00
2026-11-13 05:54:58 -05:00
2026-11-13 18:41:39 -05:00
2026-11-13 20:13:02 -05:00
2026-11-10 06:35:28 -05:00
2026-11-10 06:35:28 -05:00
2026-11-13 07:08:49 -05:00
2026-11-13 07:08:49 -05:00
2026-11-13 15:57:51 -05:00
2026-11-13 15:57:51 -05:00
2026-11-11 04:36:33 -05:00
2026-11-07 05:04:38 -05:00
2026-11-12 22:09:37 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 08:23:11 -05:00
2026-11-13 20:12:26 -05:00
2026-11-13 20:12:26 -05:00
2026-11-12 22:28:36 -05:00
2026-11-12 22:28:36 -05:00
2026-11-10 23:16:17 -05:00
2026-11-10 23:16:17 -05:00
2026-11-13 03:37:26 -05:00
2026-11-09 13:13:43 -05:00
2026-11-09 13:13:43 -05:00
2026-11-09 13:13:43 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:40 -05:00
2026-11-12 21:33:21 -05:00
2026-11-12 20:03:45 -05:00
2026-11-12 07:55:57 -05:00
2026-11-12 07:55:57 -05:00
2026-11-13 03:42:40 -05:00
2026-11-12 22:57:56 -05:00
2026-11-13 07:55:56 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 18:43:24 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:40 -05:00
2026-11-07 05:04:38 -05:00
2026-11-13 03:37:26 -05:00
2026-11-07 05:04:38 -05:00
2026-11-12 02:11:46 -05:00
2026-11-12 02:11:46 -05:00
2026-11-13 08:35:42 -05:00
2026-11-13 20:12:50 -05:00
2026-11-13 08:35:42 -05:00
2026-11-13 00:53:22 -05:00
2026-11-13 00:53:22 -05:00
2026-11-13 18:41:39 -05:00
2026-11-13 18:41:39 -05:00
2026-11-07 05:04:38 -05:00
2026-11-13 06:23:01 -05:00
2026-11-13 18:41:40 -05:00
2026-11-13 20:13:02 -05:00
2026-11-11 04:42:07 -05:00
2026-11-11 04:29:31 -05:00
2026-11-12 16:22:15 +01:00
2026-11-09 03:34:46 -05:00
2026-11-12 04:39:12 -05:00
2026-11-13 12:54:24 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 20:13:02 -05:00
2026-11-13 00:49:30 -05:00
2026-11-13 20:12:50 -05:00
2026-11-13 20:12:49 -05:00
2026-11-13 09:52:43 -05:00
2026-11-13 18:41:40 -05:00
2026-11-13 20:13:02 -05:00
2026-11-11 04:35:30 -05:00
2026-11-13 20:13:02 -05:00
2026-11-13 20:13:02 -05:00
2026-11-13 20:13:02 -05:00
2026-11-11 04:49:01 -05:00
2026-11-13 20:13:01 -05:00
2026-11-13 20:13:02 -05:00
2026-11-13 20:13:02 -05:00
2026-11-13 06:46:31 -05:00
2026-11-12 20:03:59 -05:00
2026-11-12 12:09:37 -05:00
2026-11-13 18:41:39 -05:00
2026-11-13 06:46:31 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 20:13:02 -05:00
2026-11-13 06:23:01 -05:00
2026-11-12 22:18:14 -05:00
2026-11-12 22:18:14 -05:00
2026-11-13 00:46:26 -05:00
2026-11-13 18:41:39 -05:00
2026-11-13 08:36:46 -05:00
2026-11-13 18:46:49 -05:00
2026-11-12 22:30:56 -05:00
2026-11-13 20:12:50 -05:00
2026-11-13 12:54:24 -05:00
2026-11-13 12:54:24 -05:00
2026-11-13 12:54:24 -05:00
2026-11-07 05:04:38 -05:00
2026-11-13 00:49:30 -05:00
2026-11-07 05:04:38 -05:00
2026-11-13 08:36:46 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 20:13:02 -05:00
2026-11-12 13:00:13 -05:00
2026-11-11 05:58:42 -05:00
2026-11-11 05:25:38 -05:00
2026-11-12 23:21:17 -05:00
2026-11-13 00:49:30 -05:00
2026-11-13 12:54:24 -05:00
2026-11-13 20:13:02 -05:00
2026-11-10 12:14:29 -05:00
2026-11-12 22:33:29 -05:00
2026-11-13 15:57:52 -05:00
2026-11-13 20:12:50 -05:00
2026-11-13 00:50:21 -05:00
2026-11-13 20:13:01 -05:00
2026-11-13 00:49:30 -05:00
2026-11-13 05:09:47 -05:00
2026-11-07 05:04:38 -05:00
2026-11-10 09:13:35 -05:00
2026-11-13 20:13:02 -05:00
2026-11-10 15:20:47 -05:00
2026-11-13 00:43:03 -05:00