Feoramund
f627b55cf5
mem: Fix several issues in Scratch_Allocator
...
1. The size was being adjusted for the alignment which does not make any
sense without the context of the base pointer. Now we just add the
`alignment - 1` to the size if needed then adjust the pointer.
2. The root pointer of the last allocation is now stored in order to
make the free operation more useful (and to cover the right memory
region for ASan).
3. Resizing now only works on the last allocation instead of any address
in a valid range, which resulted in overwriting allocations that had
just been made.
4. `old_memory` is now re-poisoned entirely before the resized range is
returned with the new range unpoisoned. This will guarantee that
there are no unpoisoned gaps.
Fixes #2694
2025-06-14 12:35:16 -04:00
Lucas Perlind
5c117bde6d
Add base:sanitizer package
2025-04-24 20:28:32 +10:00
Lucas Perlind
ab0b26e876
Add more asan support to the odin runtime and begin sanitizing
...
allocators
This adds various bindings to the asan runtime which can be used
to poison/unpoison memory handed out by various allocators. This
means we can catch use after free memory bugs when using operations
such as free_all during runtime.
Asan poisoning are added for the follow allocators in mem:
Arena (including temporary arenas)
Scratch
Stack
Small_Stack
Additionally a bug in the stack allocator was fixed to disallow freeing
in the middle of the stack (caught by the asan!).
I plan on adding support for all the allocators in core. This is just
a good starting point and were some of the easiest ones to implement
asan for.
2025-04-24 15:17:51 +10:00
gingerBill
1cf7a56ba7
General clean up of code
2025-01-01 15:13:46 +00:00
gingerBill
8006ba919e
Improve formatting
2024-10-11 14:48:55 +01:00
gingerBill
0d33df15b4
Merge pull request #4208 from laytan/more-wasm-vendor-support
...
wasm: support more vendor libraries
2024-09-17 11:37:10 +01:00
flysand7
e90f5d2528
[mem]: Adjust the docs on the buddy allocator
2024-09-14 10:03:04 +11:00
Laytan Laats
5ae27c6ebc
wasm: support more vendor libraries
...
Adds support for:
- box2d
- cgltf
- stb image
- stb rect pack
2024-09-09 18:49:13 +02:00
flysand7
167ced8ad1
[mem]: Don't use named params for dynamic pool in tests
2024-09-08 18:52:55 +11:00
flysand7
05df34f99c
[mem]: Start documenting allocators.odin
2024-09-08 18:44:33 +11:00
flysand7
299accb717
[mem]: Put panic allocator after nil allocator, adjust @require_results
2024-09-08 14:17:32 +11:00
flysand7
f1f5dc614e
[mem]: Remove old comments
2024-09-08 11:17:27 +11:00
flysand7
6eb80831b5
[mem]: Panic when allocator is not initialized
2024-09-08 11:12:28 +11:00
flysand7
6017a20e1c
[mem]: Make resize_bytes take a slice for the old memory
2024-09-07 15:11:04 +11:00
flysand7
2d988bbc5f
[mem]: Rename alloc to alloc_bytes and add alloc
2024-09-07 14:45:15 +11:00
flysand7
c0112d1c70
[mem]: Add free_all for buddy allocator
2024-09-07 13:27:17 +11:00
flysand7
c0e17808d4
[mem]: Split alloc and alloc_non_zeroed for buddy allocator
2024-09-07 13:26:09 +11:00
flysand7
6d3cffa13c
[mem]: Add @require_results to all functions returning values
2024-09-07 13:14:58 +11:00
flysand7
b350a35b77
[mem]: Add resize_non_zeroed variant to dynamic arena, and rename pool to arena
2024-09-07 13:10:29 +11:00
flysand7
03f6b9bbf6
[mem]: Add alloc_non_zeroed variant to dynamic pool
2024-09-07 12:59:19 +11:00
flysand7
f8641ddd1b
[mem]: Rename dynamic pool to dynamic arena
2024-09-07 12:33:12 +11:00
flysand7
aea3e9a585
[mem]: Fix vet errors
2024-09-07 12:26:47 +11:00
flysand7
4843db0960
[mem]: API for using small stack allocator directly
2024-09-07 12:23:55 +11:00
flysand7
de220a9aa5
[mem]: Remove the extra word 'allocator' in procedures
2024-09-07 11:07:06 +11:00
flysand7
9750b64096
[mem]: API for using stack allocator directly
2024-09-07 10:55:54 +11:00
flysand7
834f082dba
[mem]: Initialize scratch allocator during calls to free and resize
2024-09-07 10:24:00 +11:00
flysand7
e5106e48a8
[mem]: API for using scratch allocator directly
2024-09-07 10:09:05 +11:00
flysand7
da6213196d
[mem]: API for using arena directly
2024-09-07 09:42:04 +11:00
flysand7
2b9096517c
[mem]: Code formatting
2024-09-07 09:20:56 +11:00
DerTee
6b373cf49e
fix #3692 memory alignment bug in core:mem.dynamic_pool_alloc_bytes
2024-07-03 22:14:28 +02:00
Laytan Laats
0530f86a48
fix: buddy allocator wrong query info pointer
2024-04-28 16:09:03 +02:00
gingerBill
65277ddd6b
Add missing attribute
2024-03-06 16:30:39 +00:00
gingerBill
46718d6d85
Add Query_Info to Buddy_Allocator
2024-03-06 16:26:10 +00:00
gingerBill
2a0543d2f0
Add mem.Buddy_Allocator
2024-03-06 16:14:45 +00:00
gingerBill
792f06a234
Fix indentation
2024-03-06 15:29:07 +00:00
gingerBill
539cec7496
Move Tracking_Allocator to its own file.
2024-02-01 13:01:38 +00:00
gingerBill
3e7e779abf
Replace core:* to base:* where appropriate
2024-01-28 22:18:51 +00:00
Colin Davidson
991c1d4446
add resize_non_zeroed to query features
2024-01-17 13:27:19 -08:00
Colin Davidson
58e4a011c7
add non-zeroing append and resize
2023-12-04 00:08:13 -08:00
flysand7
270348b112
[core]: Remove do keyword from the core library
2023-11-11 20:36:38 +11:00
Benjamin Findley
7e4a65114a
fix whitespace
2023-08-15 08:49:27 -07:00
Benjamin Findley
38e06f13d6
prevent potential segfaults when using large allocations from dynamic pool
2023-08-11 11:49:31 -07:00
gingerBill
44ea82f845
Clean up usage of using throughout core and vendor
2023-07-31 11:46:40 +01:00
gingerBill
3d9328fd79
Default to panic allocator for wasm targets
2023-06-26 15:55:52 +01:00
gingerBill
762747273e
Add mutex to mem.Tracking_Allocator
2023-05-25 11:58:02 +01:00
gingerBill
600c97cc0f
Add missing Allocator_Error and @(require_results) to many procedures
2023-05-22 11:34:38 +01:00
hikari
d904ae5191
Replaced opaque bit-shifts with readable constants for memory units
2022-12-24 08:27:15 +02:00
gingerBill
15bbdb2030
Merge pull request #2181 from odin-lang/map-dev
...
New `map` internals
2022-11-17 15:29:28 +00:00
Michael Freundorfer
f323a179d9
Handle freeing nil in scratch allocator
2022-11-14 21:44:20 +01:00
gingerBill
f2f2d532f5
Add extra calls to Tracking_Allocator
2022-11-09 22:31:49 +00:00