469 karma · joined August 21, 2013
The module is simple, with the only tricky part being replacing a system call. My goal here was to play around with the idea of modifying source code en route to a compiler/interpreter in a sneaky way. Nothing more sophisticated than that. :]
My experiences led me to believe that, while this can be effective, it only works on certain classes of people. That is, I think a person needs a certain amount of naïveté to be drawn in by schemes like this. They need to already be willing to buy into some litany of conquest and glory. To be young and/or dumb.
Perhaps it is an innate human tendency to form stronger bonds under these conditions; but it's certainly not expressed equally throughout all phases of life, circumstances, and the population at large. I'd be very wary of attempting to exploit it by constructing rituals for a software team.
There's a variable outside of the functions scope. If the value of the global variable were changed before it's referenced in the function the outcome would change.
int global_int;
int is_not_reentrant(int x) {
int x = x; // An arbitrary operation
return global_int + x; // the result depends on global_int
}
In the second, the value of the global_int is copied into a variable within the function; so the result is no longer dependent on anything outside of the function's scope. My thinking was, that this demonstrated reentrancy. int global_int;
int is_reentrant(int x) {
int saved = global_int;
return saved + x;
}
From the looks of it I did make a mistake, since it seems to be missing one of these criteria. I'll modify the snippets to fix it. Thanks! :) +Must hold no static (or global) non-constant data.
+Must not return the address to static (or global) non- constant data.
-Must work only on the data provided to it by the caller.
+Must not rely on locks to singleton resources.
+Must not modify its own code (unless executing in its own unique thread storage)
+Must not call non-reentrant computer programs or routines.Got into networking/security, web development, and data infrastructure design. Started writing code in Python, C, and Java and catching myself up on the fundamentals of CS. Took a job as a developer, then another, then another....