PC Gamer just posted:

Can you name the game this game-within-a-game is from?

If an RPG doesn't have a card game in it, do I even want to play?

pcgamer.com/games/can-you-name…

#gamingNews #PCGamer

UK TAXPAYERS FUNDED THERAPY FOR ISRAELI SOLDIERS

National 24 hour brunch chain opens new Central Ohio eatery - Mary McCarthy

Award-winning cannabis company Klutch Cannabis opens second Central Ohio dispensary - Maggie Valentine

Popular Cleveland-based apparel store coming to Columbus - Maggie Valentine

Debby Ryan names her favorite Columbus restaurants on ‘Last Meals’ - Mary McCarthy

Bodega sold to new owner; rebrand, rename coming https://614now.com/2026/fo…

National 24 hour brunch chain opens new Central Ohio eatery https://614now.…

Popular Cleveland-based apparel store coming to Columbus https://614now.com…

Insider Gaming just posted:

Gears of War: E-Day PC System Requirements Revealed

Coalition has revealed the minimum, recommended and ultra PC system requirements for Gears of War: E-Day. Here are more details.

insider-gaming.com/gears-of-wa…

#gamingNews #InsiderGaming

TheGamer just posted:

Marvel Rivals To Officially Crack Down On Leavers And Throwers

Marvel Rivals is finally doing something about the game's throwing epidemic, and is dishing out stricter penalties.

thegamer.com/marvel-rivals-str…

#gamingNews #TheGamer

PC Gamer just posted:

Valheim devs finally get around to reading 5 years of player feedback, let you remap dodge key

Now get to work unlearning five years of three-key muscle memory.

pcgamer.com/games/survival-cra…

#gamingNews #PCGamer

Sail World: 470 Open European Trophy and Masters Cup day 3: sail-world.com/news/299924/470… #sailing #sailnews #sail #news

Gaza death toll from Israeli geocidal war mounts to 73,821

Rock, Paper, Shotgun just posted:

"Nearly everyone" laid off at Hyper Light Drifter devs Heart Machine after publisher drops unannounced game

Heart Machine, the US-based makers of Hyper Light Drifter, its multiplayer spinoff Hyper Light Breaker, and last year’s Possessor(s), have laid off "nearly everyone" on staff after an unnamed publisher pulled funding for their next, unannounced game.
Read more
rockpapershotgun.com/nearly-ev…

#gamingNews #RockPaperShotgun

🔴 DroneAttack | 5/10
🇱🇧 🇮🇱

Sound grenade drop in Zawtar Al Gharbiyeh (Lebanon)
An Israeli drone dropped a sound grenade in Zawtar Al Gharbiyeh next to a Lebanese army checkpoint.

#OSINT #NewsGroup #Lebanon #Israel #UAV

PC Gamer just posted:

Epic boss Tim Sweeney says the EU's social media ban for under-13s 'would be terrible for the next generation of humanity'

The EU KIDS Act would impose strict new regulations on social media, video sharing, gaming, and other online services.

pcgamer.com/gaming-industry/ep…

#gamingNews #PCGamer

World News in Brief: September 17

Ireland’s national broadcaster RTÉ announced it will boycott the 2027 Eurovision Song Contest over Israel’s participation citing the ongoing genocide in the Gaza Strip.

#Israel #Palestine #Gaza #Genocide

Israel has reduced the number of Palestinian patients and companions allowed to leave Gaza for medical treatment in Egypt from 136 to 61, according to Gaza’s Health Ministry.

The ministry said those prevented from travelling include patients requiring urgent specialized care and condemned the measure as a violation of their right to medical treatment.

#Israel #Palestine #Gaza #Palestinian

Yemeni Armed Forces strongly denies claim of attack on Mecca

Breaking | Multiple Palestinians were reportedly injured by Israeli gunfire east of Al-Nusierat refugee camp, central Gaza Strip.

#Israel #Palestine #Gaza #Palestinian

Insider Gaming just posted:

How To Complete Ones To Watch Savio Objective In EA FC 27 Ultimate Team

Ones to Watch Savio is one of the best cards of the campaign in EA FC 27, but he can be quite tricky to obtain.

insider-gaming.com/how-to-comp…

#gamingNews #InsiderGaming

Israel is deploying AI to monitor Palestinian land in the occupied West Bank, identify structures and accelerate demolitions and forced displacement.

The technology can scan vast areas and prioritise potential demolition targets with less reliance on human oversight.

#Israel #Palestine #Gaza #WestBank #Palestinian

Israeli occupation soldiers stand by as a Palestinian they detained, handcuffed, and forced to the ground loses consciousness, preventing his family from coming to his aid outside their home in Khallet Al-Homs in Masafer Yatta, south of Hebron, in the occupied West Bank.

#Israel #Palestine #Gaza #WestBank #Palestinian

Gematsu just posted:

Crazy Taxi: World Tour ‘Japan Map’ trailer, screenshots

SEGA has released a new trailer and screenshots for Crazy Taxi: World Tour showcasing the …

gematsu.com/2026/09/crazy-taxi…

#gamingNews #Gematsu

Gamespot just posted:

Fire Emblem: Fortune’s Weave – Which Flame Lord Should You Pick First?

Fire Emblem: Fortune's Weave is a sprawling tale composed of four different interconnected heroes, each with their own story campaign. These can be played in any order, and the choice might seem daunting. Which hero is the best to start your journey with? The simple answer is that you can begin with any hero you choose, but if ...

gamespot.com/articles/fire-emb…

#gamingNews #Gamespot

PC Gamer just posted:

Backrooms director & Portal superfan Kane Parsons spotted visiting Valve for the second time this year

A well-deserved victory lap, or something more?

pcgamer.com/games/fps/backroom…

#gamingNews #PCGamer

Game Informer just posted:

Hyper Light Drifter Maker Heart Machine Lays Off "Nearly Everyone"

Heart Machine, an indie developer known for games like Hyper Light Drifter and Solar Ash, has laid off most of its staff, according to studio head Alx Preston. Preston took to LinkedIn to share the news that the studio was working on a game that was funded by an unnamed publisher, but after that publisher ...

gameinformer.com/2026/09/17/hy…

#gamingNews #GameInformer

Rust guarantees memory safety, not resource freedom. Calling std::mem::forget suppresses destructor execution entirely, tearing down the stack pointer while leaving heap metadata active in allocator slabs. This deep dive dissects the machine-level divide between std::mem::forget, Box::into_raw, and ManuallyDrop. Learn how orphaned allocations evade Undefined Behavior while silently fragmenting virtual memory, locking anonymous pages into RSS, and triggering catastrophic kernel OOM killer events across long-running infrastructure.

std::mem::forget drops the stack-allocated handle without executing Drop glue, permanently orphaning heap metadata within allocator arenas. It guarantees the absence of Undefined Behavior by design, while silently converting bounded operational memory into unrecoverable virtual memory fragmentation under sustained production throughput.

The Stack Frame Disappearance: Execution Flow of an Erased Destructor


The failure mode is silent, cumulative, and lethal to high-throughput systems. When a thread executes std::mem::forget on a heap-backed handle, the Linux kernel logs no faults, memory sanitizers pass the operation as sound, and CPU execution continues uninterrupted. Weeks into production execution, the Linux kernel Out-Of-Memory (OOM) killer abruptly dispatches an uncatchable SIGKILL to the process. Telemetry displays no panic records, no segmentation faults, and no heap corruption dumps only an unrelenting, monotonic growth of the process Resident Set Size (RSS) that progressively starves adjacent control planes.

To understand why this happens, the operation must be dismantled at the Application Binary Interface (ABI) layer. In modern Rust (post-RFC 1214), std::mem::forget is not a compiler intrinsic. It is a plain function defined as:

pub fn forget<T>(t: T) {
let _ = ManuallyDrop::new(t);
}

When passing a heap allocation such as a Box or a capacity-backed Vec into std::mem::forget, the handle moves by value. On an x86_64 target complying with the System V ABI, a Box is physically represented on the thread stack as a single 64-bit virtual memory address pointing to the payload on the heap. Passing this Box into forget transfers that 64-bit integer into the function's parameter storage (either the %rdi register or a designated stack spill slot).

Inside forget, the argument is wrapped into ManuallyDrop. The ManuallyDrop type is decorated with #[repr(transparent)], guaranteeing that its memory layout, size, and ABI match T identically. However, ManuallyDrop fundamentally alters compiler control flow: it deliberately lacks an implementation of core::ops::Drop.

When forget reaches its epilogue, the compiler’s drop elaboration pass scans the active scope. Because the value is encased in ManuallyDrop, rustc synthesizes zero drop flags and emits zero drop glue. No call to the allocator’s deallocation hook (alloc::alloc::dealloc or libc free) is compiled into the binary. The stack frame of forget collapses: %rsp increments, and the registers holding the heap address are cleared or repurposed by subsequent stack frames. The stack handle ceases to exist. The address is gone from CPU visibility, but the memory subsystem remains completely unchanged.

Anatomy of the Orphan: What the Allocator and Kernel See


While the thread stack has forgotten the memory location, the heap subsystem retains no telemetry that the reference was lost. Modern high-performance allocators such as jemalloc or ptmalloc operate through arenas partitioned into size-classed bins, slabs, and extents.

Stack (x86_64 Thread Frame) Virtual Memory / Heap (jemalloc Arena)
┌────────────────────────────┐ ┌──────────────────────────────────────┐
│ %rdi / Stack Slot: │ │ Arena Slab (e.g., 64-byte size class)│
│ [ 0x00007fff5f12a040 ] ────┼─────────┼─► [ Allocation Metadata: ACTIVE ] │
│ │ │ [ Payload: 64 bytes ] │
└────────────────────────────┘ └──────────────────────────────────────┘
│ │
std::mem::forget(handle) │
▼ │
┌────────────────────────────┐ │
│ %rsp increments; │ │
│ Slot overwritten by caller │ │
│ [ 0x???????????????? ] │ ▼
└────────────────────────────┘ ┌──────────────────────────────────────┐
│ Slab bit remains 1 (ALLOCATED). │
Pointer destroyed. │ Free-list bypasses this chunk. │
Zero references remain. │ madvise(MADV_DONTNEED) NEVER runs. │
│ Virtual pages remain pinned in RSS. │
└──────────────────────────────────────┘

When the Box was originally initialized, the allocator's fast path:

  • Mapped the allocation request to a size-class slab (for instance, 64 bytes).
  • Located an active slab region associated with the calling thread’s CPU core arena.
  • Updated the internal slab bitmap, marking that specific chunk index from 0 (free) to 1 (allocated).
  • Returned the pointer to the client code.

Under standard RAII execution, when Box falls out of scope, the destructor executes alloc::alloc::dealloc(ptr, layout). The allocator catches this invocation, flips the bitmap bit back to 0, updates its free-list pointers, and tracks slab vacancy. When every chunk inside a 4 KiB or 2 MiB page run becomes vacant, the allocator coalesces the run and issues an asynchronous madvise(addr, len, MADV_DONTNEED) or madvise(addr, len, MADV_FREE) system call. This informs the Linux kernel page frame reclaimer that the physical pages can be decoupled from the process's page table entries (PTEs), dropping the process RSS.

Executing std::mem::forget breaks this operational chain entirely. The deallocation routine is bypassed. To jemalloc, the chunk at that virtual address remains marked as active, live heap memory in the slab bitmap. Because that chunk is never returned to the free-list, the surrounding slab can never reach a completely vacant state. A single orphaned allocation within a slab prevents the allocator from ever returning the backing 4 KiB page to the kernel.

The consequences compound under sustained workloads: pages remain populated with sparse, unreferenced allocations. Virtual address space becomes internally fragmented, and the kernel cannot evict these anonymous pages to reduce memory pressure without resorting to swap space or triggering kswapd.

The Triad: Contrasting ManuallyDrop, into_raw, and forget


Engineers frequently conflate ManuallyDrop, Box::into_raw, and std::mem::forget. While all three suppress the invocation of Drop::drop, their effects on stack layout, resource ownership, and heap reachability are starkly differentiated.

use std::alloc::{Layout, alloc, dealloc};
use std::mem::{ManuallyDrop, forget};

#[repr(C)]
struct Node {
payload: [u8; 64],
}

fn main() {
unsafe {
// --- 1. Box::into_raw: Controlled Ownership Transfer ---
// Stack: Holds a 64-bit raw pointer (*mut Node).
// Heap: Allocated, fully reachable, deallocation deferred to caller.
let boxed = Box::new(Node { payload: [0xAA; 64] });
let raw_ptr: *mut Node = Box::into_raw(boxed);

assert_eq!((*raw_ptr).payload[0], 0xAA);
// Ownership retained: We can reclaim the memory deterministically.
let _ = Box::from_raw(raw_ptr); // Drop runs here; heap chunk freed.

// --- 2. ManuallyDrop<T>: Zero-Cost Stack Wrapper ---
// Stack: Holds ManuallyDrop<Box<Node>>, identical ABI to Box<Node>.
// Heap: Allocated, reachable, destructor suppressed until manually triggered.
let boxed_md = Box::new(Node { payload: [0xBB; 64] });
let mut manual = ManuallyDrop::new(boxed_md);

// Payload remains fully accessible via Deref/DerefMut:
assert_eq!(manual.payload[0], 0xBB);

// Destructor can still be executed deliberately without move penalties:
ManuallyDrop::drop(&mut manual); // Deallocates heap memory via Drop glue.
// Stack slot for 'manual' remains until end of scope, but memory is freed.

// --- 3. std::mem::forget: Irreversible Reference Erasure ---
// Stack: Moves Box<Node> into forget(), registers cleared on exit.
// Heap: Allocated, UNREACHABLE, allocator bitmap remains set to 1.
let boxed_leak = Box::new(Node { payload: [0xCC; 64] });
let leaked_address = &*boxed_leak as *const Node;

forget(boxed_leak);
// AT THIS POINT:
// - 'boxed_leak' stack handle is destroyed.
// - Allocator receives NO deallocation signal.
// - Heap chunk at 'leaked_address' is orphaned permanently.
// - Reading 'leaked_address' via an external raw pointer is valid memory,
// but ownership invariants are destroyed.
assert_eq!((*leaked_address).payload[0], 0xCC);

// Emergency manual reclamation (Demonstration purposes only):
// If we did not cache 'leaked_address', this memory is unrecoverable.
dealloc(leaked_address as *mut u8, Layout::new::<Node>());
}
}

Mechanism,Stack Representation,Destructor Execution,Heap Reachability,Primary Architecture Purpose
Box::into_raw,Exposes naked *mut T pointer register,Suppressed,Fully retained,Transferring ownership across C-ABI FFI boundaries
ManuallyDrop<T>,Transparent wrapper around T (#[repr(transparent)]),Suppressed until .drop() or .into_inner(),Fully retained,Struct field initialization unions and manual drop staging
std::mem::forget,"Consumes T by value, tears down stack frame",Permanently suppressed,Severed and lost,Inhibiting destructors when handles have already been duplicated

MechanismStack RepresentationDestructor ExecutionHeap ReachabilityPrimary Architecture Purpose
Box::into_rawExposes naked *mut T pointer registerSuppressedFully retainedTransferring ownership across C-ABI FFI boundaries
ManuallyDropTransparent wrapper around T (#[repr(transparent)])Suppressed until .drop() or .into_inner()Fully retainedStruct field initialization unions and manual drop staging
std::mem::forgetConsumes T by value, tears down stack framePermanently suppressedSevered and lostInhibiting destructors when handles have already been duplicated

Cascading Resource Traps: Beyond Raw Bytes


The fatal assumption in production is viewing std::mem::forget solely through the lens of heap bytes. In systems programming, memory buffers are rarely inert data blocks; they encapsulate operating system handles and synchronization primitives.

Consider a heap-allocated struct encapsulating a POSIX file descriptor or a network handle:

struct SocketBuffer {
fd: std::os::fd::RawFd,
buffer: Box<[u8; 65536]>,
}

impl Drop for SocketBuffer {
fn drop(&mut self) {
unsafe { libc::close(self.fd); }
}
}

Executing std::mem::forget on SocketBuffer suppresses SocketBuffer::drop. This does not merely orphan the 64 KiB buffer inside the allocator’s size-class bin; it halts the execution of libc::close(2). The Linux kernel’s open file table keeps the file descriptor slot open.

Under sustained traffic, the operating system reaches the per-process limit configured in RLIMIT_NOFILE. Subsequent attempts by database pools, logging engines, or RPC clients to open sockets begin returning EMFILE ("Too many open files"). The failure cascades outward, entirely detached from the code site where the allocation was forgotten.

A more severe state failure manifests when forgetting types holding synchronization boundaries. Forgetting a std::sync::MutexGuard leaves the underlying synchronization primitive such as an atomic lock flag or a Linux futex state permanently set to locked. Because the destructor does not run, the mutex is not merely poisoned; it remains permanently acquired without an owner. Every worker thread that subsequently attempts to acquire that lock transitions into uninterruptible kernel sleep (TASK_UNINTERRUPTIBLE), freezing worker pools without raising a panic.

The Architectural Trade-Off: Safety Guarantees vs. Resource Depletion


The existence of std::mem::forget as a safe function highlights an essential boundary in systems architecture: Rust's type system guarantees memory safety, not resource liveness.

In the formal definition of the Rust abstract machine:

  • Undefined Behavior constitutes operations that invalidate compiler assumptions: data races, dereferencing invalid or dangling pointers, unaligned pointer access, or creating invalid references (such as aliased &mut).
  • Resource Leaks do not invalidate the abstract machine. An orphaned heap allocation occupies a valid, non-overlapping range of the process's virtual address space. Because the abandoned block is never read after its handle disappears, no memory invariants are broken. It remains valid, mapped, and inert.

Consequently, memory leaking is safe by design. Safe code can construct circular reference graphs via Rc or invoke std::mem::forget without invoking unsafe.

The trade-off is stark: the language runtime sacrifices deterministic resource termination to eliminate undefined behavior at the FFI boundary. When interfacing with external runtimes (such as passing handles to C runtimes or asynchronous kernel completion rings like io_uring), std::mem::forget allows an engineer to disengage the compiler’s automatic destruction passes.

Using std::mem::forget anywhere outside of low-level FFI ownership handoffs or specialized lock-free algorithms is an architectural defect. It circumvents the deterministic teardown model that justifies using a systems language in the first place, converting deterministic allocation lifecycles into uncontrolled virtual memory expansion and allocator arena bloat.#programming #linux #coding #rust #software #development #engineering #inclusive #community

Rock, Paper, Shotgun just posted:

Escape a roundabout as a stoned tuk-tuk driver in Zero Parades' free Director’s Cut update, which will add about 40,000 new words to the RPG next month

As many reservations as I had going into ZA/UM's Zero Parades: For Dead Spies earlier this year, what with all of the drama and upset that's surrounded the studio since Disco Elysium's release, it pleasantly surprised me. I ...

rockpapershotgun.com/escape-a-…

#gamingNews #RockPaperShotgun

Von Homer bis Hollywood: Im Inneren der antiken Stadt Troja

Why the West Still Misunderstands BRICS

Gematsu just posted:

The Rogue Prince of Persia ‘Anniversary’ update now available

Publisher Ubisoft and developer Evil Empire have released the “Anniversary” update for The Rogue Prince …

gematsu.com/2026/09/the-rogue-…

#gamingNews #Gematsu

Gamespot just posted:

I Played WoW: Forever On A Controller, And That’s Big News

World of Warcraft: Forever, Blizzard's next evolution of WoW Classic that will see significant changes and content additions, is fully playable on controller. I got to experience WoW: Forever's new Skyborne elf starting zone with the control scheme during a hands-on demo at BlizzCon 2026. A prompt outlining the controls noted ...

gamespot.com/articles/i-played…

#gamingNews #Gamespot

Gematsu just posted:

Psikyo Memories announced for PS5, Switch 2

Edia has announced shoot ’em up collection Psikyo Memories for PlayStation 5 and Switch 2. …

gematsu.com/2026/09/psikyo-mem…

#gamingNews #Gematsu

Zionist's Pager Terror Attack Two Years Later: Survivors' Testimony

PC Gamer just posted:

The lead developer of the PS5 Linux project has abandoned ship: 'It is just a bunch of noobs using LLMs and writing hacks they don't even understand':

The project, apparently, is "all down the sink."

pcgamer.com/hardware/the-lead-…

#gamingNews #PCGamer

Insider Gaming just posted:

Today’s Wordle #1917: Hints and Answer for September 18, 2026

Stuck trying to guess the Wordle #1917 answer? Get today’s hints, starter words, and full Wordle answer for September 18, 2026.

insider-gaming.com/todays-word…

#gamingNews #InsiderGaming

Gamespot just posted:

GTA 6 Boss Says PC Is Becoming “More And More Important”

Rockstar's Grand Theft Auto 6 launches in November for PlayStation 5 and Xbox Series X|S, but is it also going to release on PC? It won't at launch, but history suggests it will come to PC further down the track. Now, Take-Two boss Strauss Zelnick has commented on the company's approach to PC releases generally. At the company's virtual ...

gamespot.com/articles/gta-6-bo…

#gamingNews #Gamespot

DualShockers just posted:

Death Stranding Star Returns as Call of Duty: Modern Warfare 4 Villain

During TGS, Call of Duty: Modern Warfare 4 revealed Mads Mikkelsen as the main antagonist for the game.

dualshockers.com/death-strandi…

#gamingNews #DualShockers

Flood Watch: Morning Storms Threaten to Swamp Columbus Commute - Amber Reed

This website uses cookies. If you continue browsing this website, you agree to the usage of cookies.