Comments (1)
Digging into this, it looks like the problem is that :
CAMLprim value caml_obj_reachable_words(value v)
{
...
extern_init_position_table(s);
...
/* In Multicore OCaml, we don't distinguish between major heap blocks and
* out-of-heap blocks, so we end up counting out-of-heap blocks too. */
while (1) {
if (Is_long(v)) {
/* Tagged integers contribute 0 to the size, nothing to do */
} else if (extern_lookup_position(s, v, &pos, &h)) {
...
extern_lookup_position uses s
to calculate a bitvector hash, but that value is not initialised correctly as:
static void extern_init_position_table(struct caml_extern_state* s)
{
if (s->extern_flags & NO_SHARING) return;
s->pos_table.size = POS_TABLE_INIT_SIZE;
s->pos_table.shift = 8 * sizeof(value) - POS_TABLE_INIT_SIZE_LOG2;
NO_SHARING is set, so the remainder of s
is uninitialised garbage. I'm just tracing through to see why this isn't a problem on Linux but appears to be on FreeBSD/OpenBSD.
from ocaml-multicore.
Related Issues (20)
- Not all registers need to be saved for `caml_call_realloc_stack`
- Use explicit next pointer in gc_regs_bucket
- Backport PR #701 to 4.12 HOT 1
- caml_process_pending_actions_exn is missing HOT 2
- Audit OCAMLRUNPARAM options HOT 1
- Make Minor_heap_max and Max_domains as OCAMLRUNPARAM options HOT 10
- Caml_state for domains should not use mmap HOT 6
- Atomic access on `bigarray`
- Bring runner.sh in the CI in line with trunk
- Call to `fork` in `Sys.command` HOT 1
- Improve `stack_size_bucket` / `alloc_stack_noexc`
- Unify GC interrupt and signals triggering mechanisms HOT 2
- Getting segfault/undefined behavior using multicore with custom blocks HOT 10
- Double check rebase through ocaml/ocaml#10726 HOT 1
- Revert some changes to match trunk
- Filter-tree to normalise email address from commiters HOT 4
- Signal stack is freed, but isn't reset. HOT 1
- `Domain.DLS`: overflow and `release_key` function HOT 1
- Reporting a vulnerability HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ocaml-multicore.