- Aug 28, 2006
-
-
deuce authored
-
deuce authored
prevent threads from exiting while ids are beign changed.
-
deuce authored
the SIG33.
-
deuce authored
So, looking into this issue has shown me a number of things... 1) THE CAUSE FOR SIGWAIT FAILURE!!! The new Linux pthread model sends a "real-time signal" SIG33 to every thread when the saved, real, or effective user or group ID changes which then allows every thread to synchronize their IDs. You cannot prevent this signal, and it causes the current syscall to fail. 2) Synchronet calls do_seteuid() quite often during startup and, when thread setXid is broken, every time a thread starts up. As a result, you can get a storm of SIG33s. Further, calling setXid() when not all threads have processed their SIG33 results in a deadlock apparently. 3) There is no apparent way of telling if all other threads have processed their SIG33s yet. As a result, I've added a 10ms pause after a setXid() call to give it time to work. Since this happens while the mutex is held, it should work, but 10ms may be too large or too small or not effective. This will add 10ms to EVERY threads startup time which will negatively effect just about everything. I'll be looking into the possibility that setXid() is no longer actually broken on Linux and so we can reduce this issue to only happening while Synchronet is still starting up, rather than ongoing for every thread. Thanks to everyone for their patience on the sigwait() failure issue. Hopefully we'll be able to actually resolve this relatively soon. NOTE: There will still be the sigwait failures during startup... the hope is that we can prevent them from being an ongoing issue.
-
deuce authored
-
deuce authored
-
deuce authored
-
- Aug 27, 2006
-
-
deuce authored
was linked with ciolib. This seems to work perfectly on *nix and is untested on Win32. This *should* fix all the SDL-related stupidities that were occuring previously (second system() call killing the program, etc). Testers welcome!
-
deuce authored
setre?id() since new systems apparently hang on that call when the IDs are already what you want. Further, use a single mutex to protect both do_setuid() and do_seteuid(). The symptoms: When you connect to the BBS, the user prompt would repeat quickly three times then drop carrier on you. Nothing you entered ever showed up. --OR-- You seem to connect to the BBS, but you never see any output. This was only easily reproduced when starting the system as a non-root user. This has been confirmed on FC3, FC4, and Debian etch. The cause: output_thread or input_thread called thread_up() which called do_seteuid() which hung in setregid(). Since do_seteuid() is holding a mutex at this point, when the other *put_thread calls thread_up(), it waits forever for the mutex. If output_thread starts first, this results in getchr() returning ^C every time it's called since input_thread_running is false. Question for DigitalMan: Should output_thread/input_thread post a semaphore when they're up to prevent SMP systems from getting far enough into answer() to call IO stuff before the corresponding thread is running? A timed semaphore wait in main.cpp then could be used (you wouldn't want to block forever in case this happens again).
-
deuce authored
-
- Aug 26, 2006
- Aug 25, 2006
-
-
deuce authored
variable names in the format: XXXXX,#,STR Where XXXX is the hex value of the CRC # is zero if this is a bad match and non-zero if it's a good match. STR is the variable string. If you run unbaja with brute-forcing, and it makes a BAD match, adjust the second value in the line and run it again to brute-force ignoring the bad match. At some point, I may have it pick up from the last variable.
-
- Aug 24, 2006
-
-
deuce authored
Over twice as fast now baby... and that's a debug build.
-
deuce authored
-
deuce authored
Add a new -b## parameter... This parameter will specify the number of characters to attempt brute-force decoding of variable names to. Using the stored bruted array would be a way of loading a dictionary too.
-
deuce authored
-
deuce authored
when exiting from last edit line.
-
rswindell authored
-
rswindell authored
-
deuce authored
Remove useless scope_chain property.
-
deuce authored
-
deuce authored
DIE DIE DIE!
-
deuce authored
-
deuce authored
DigitalMan hath spoken.
-
deuce authored
-
deuce authored
Make removecase() handle dirs as well as files through the use of a new static delfiles_and_or_dirs() function which is basically delfiles() with an option to remove() dirs too. delfiles() simply calls this function now.
-
- Aug 23, 2006
-
-
deuce authored
-
deuce authored
- Don't allow ? or * in the path - Various bug-fixes
-
deuce authored
that exist. Fix to delfiles() to delete from cwd if inpath is a zero-length string.
-
rswindell authored
-
deuce authored
-
rswindell authored
-
deuce authored
use dest file as filename from editor.inf if subject is blank.
-
deuce authored
Sysops, rename all .pla files to .plan Dance little SysOps dance! BWA HA HA!
-
rswindell authored
single function. * editfile() now modifies a temporary copy of the file which solves 2 problems: A. editors restricted to the temp dir (e.g. PICO) can now be used to edit other files (e.g. sig files) B. DOS editors can now be used to edit files with long filenames (e.g. .plan files)
-
rswindell authored
(not user-modifyable) - used for "New User Validation" e-mail.
-
deuce authored
-
rswindell authored
- returns true/false if the user's terminal supports all the passed flags - returns the supported flags if no flags are passed for comparison - automatically uses the auto-terminal-type flags if no user is logged-on
-
rswindell authored
in the if() - no functional change.
-