Tuesday, June 13, 2023

Digest for comp.lang.c++@googlegroups.com - 5 updates in 4 topics

olcott <polcott2@gmail.com>: Jun 13 04:38PM -0500

When termination analyzer H is intended to prevent denial of service
attacks is presented with an input D that has been defined to have a
pathological relationship to this termination analyzer, it correctly
aborts the simulation of this input that would have otherwise caused H
to never terminate until system resources have been exhausted, crashing
the system.
 
Can D correctly simulated by H terminate normally?
 
The x86utm operating system based on an open source x86 emulator. This
system enables one C function to execute another C function in debug
step mode. When H simulates D it creates a separate process context for
D with its own memory, stack and virtual registers. H is able to
simulate D simulating itself, thus the only limit to recursive
simulations is RAM.
 
// The following is written in C
//
01 typedef int (*ptr)(); // pointer to int function
02 int H(ptr x, ptr y) // uses x86 emulator to simulate its input
03
04 int D(ptr x)
05 {
06 int Halt_Status = H(x, x);
07 if (Halt_Status)
08 HERE: goto HERE;
09 return Halt_Status;
10 }
11
12 void main()
13 {
14 H(D,D);
15 }
 
Execution Trace
Line 14: main() invokes H(D,D);
 
keeps repeating (unless aborted)
Line 06: simulated D(D) invokes simulated H(D,D) that simulates D(D)
 
Simulation invariant:
D correctly simulated by H cannot possibly reach its own line 09.
 
H correctly determines that D correctly simulated by H cannot possibly
terminate normally on the basis that H recognizes a dynamic behavior
pattern equivalent to infinite recursion.
 
The x86utm operating system (includes several termination analyzers)
https://github.com/plolcott/x86utm
 
It compiles with the 2017 version of the Community Edition
https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=15
 
 
--
Copyright 2023 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Bonita Montero <Bonita.Montero@gmail.com>: Jun 13 08:31PM +0200

What is the if( ... ) below good for ?
 
template<bit_cursor_iterator BitIt>
constexpr uint64_t bit_cursor<BitIt>::dRead( uint64_t const &data ) noexcept
{
#if defined(__GNUC__) || defined(__llvm__)
if( (size_t)&data % 8 )
__builtin_unreachable();

No comments: