Restart CI for New Technology and UBSAN hunting

Continuous Integration (via runit and runitd) is now re-enabled on win7
and win10. The `make test` command, which runs the tests on all systems
is now the fastest and most stable it's been since the project started.

UBSAN is now enabled in MODE=dbg in addition to ASAN. Many instances of
undefined behavior have been removed. Mostly things like passing a NULL
argument to memcpy(), which works fine with Cosmopolitan Libc, but that
doesn't prevents the compiler from being unhappy. There was an issue w/
GNU make where static analysis claims a sprintf() call can overflow. We
also now have nicer looking crash reports on Windows since uname should
now be supported and msys64 addr2line works reliably.
This commit is contained in:
Justine Tunney 2022-03-21 03:46:16 -07:00
parent d5ff2c3fb9
commit 5e8ae2d5bc
80 changed files with 506 additions and 249 deletions

View file

@ -588,7 +588,7 @@ int main(int argc, char *argv[]) {
size_t size;
char *option;
unsigned yd, xd;
showcrashreports();
ShowCrashReports();
GetOpts(argc, argv);
// if sizes are given, 2 cases:
// - positive values: use that as the target size

View file

@ -306,7 +306,7 @@ void GenerateMatrix(FILE *f) {
int main(int argc, char *argv[]) {
int i;
FILE *f;
showcrashreports();
ShowCrashReports();
GetOpts(argc, argv);
CHECK_NOTNULL((f = fopen(path_, "w")));
if (optind < argc) FATALF("TODO(jart): support input files");

View file

@ -1397,7 +1397,7 @@ static void Gui(void) {
*/
int main(int argc, char *argv[]) {
if (!NoDebug()) showcrashreports();
if (!NoDebug()) ShowCrashReports();
out = 1;
speed = 1;
tyn = right = 80;

View file

@ -465,8 +465,8 @@ static unsigned char Opacify2(unsigned yw, unsigned xw,
}
static dontinline void PrintImage2(unsigned yw, unsigned xw,
unsigned char img[4][yw][xw], unsigned yn,
unsigned xn) {
unsigned char img[4][yw][xw], unsigned yn,
unsigned xn) {
bool didhalfy;
unsigned y, x;
didhalfy = false;
@ -501,8 +501,8 @@ static dontinline void PrintImage2(unsigned yw, unsigned xw,
}
static dontinline void *DeblinterlaceRgba2(unsigned yn, unsigned xn,
unsigned char D[4][yn][xn],
const unsigned char S[yn][xn][4]) {
unsigned char D[4][yn][xn],
const unsigned char S[yn][xn][4]) {
unsigned y, x;
for (y = 0; y < yn; ++y) {
for (x = 0; x < xn; ++x) {
@ -588,8 +588,8 @@ void ProcessImageMagikarp(unsigned yn, unsigned xn,
}
dontinline void WithImageFile(const char *path,
void fn(unsigned yn, unsigned xn,
unsigned char img[yn][xn][4])) {
void fn(unsigned yn, unsigned xn,
unsigned char img[yn][xn][4])) {
struct stat st;
int fd, yn, xn;
void *map, *data;
@ -634,7 +634,7 @@ int main(int argc, char *argv[]) {
break;
}
}
showcrashreports();
ShowCrashReports();
for (i = optind; i < argc; ++i) {
WithImageFile(argv[i], scaler);
}

View file

@ -926,7 +926,7 @@ static void GetOpts(int argc, char *argv[]) {
}
int main(int argc, char *argv[]) {
if (!NoDebug()) showcrashreports();
if (!NoDebug()) ShowCrashReports();
out = 1;
GetOpts(argc, argv);
Open();

View file

@ -35,7 +35,7 @@ int main(int argc, char *argv[]) {
FILE *f;
int i, n, t;
char *sym, tabs[64];
showcrashreports();
ShowCrashReports();
f = fopen("/tmp/syms.txt", "r");
memset(tabs, '\t', 64);
while ((sym = chomp(xgetline(f)))) {

View file

@ -38,6 +38,7 @@
#include "libc/stdio/stdio.h"
#include "libc/sysv/consts/madv.h"
#include "libc/sysv/consts/o.h"
#include "libc/time/time.h"
#include "tool/decode/lib/flagger.h"
#include "tool/decode/lib/idname.h"
@ -518,7 +519,6 @@ void PrintModulesMemoryOrder(void) {
}
int main(int argc, char *argv[]) {
showcrashreports();
if (IsLinux()) {
return NextBestThing();
}

View file

@ -1536,7 +1536,7 @@ int main(int argc, char *argv[]) {
sigaddset(&wut, SIGCHLD);
sigaddset(&wut, SIGPIPE);
sigprocmask(SIG_SETMASK, &wut, NULL);
showcrashreports();
ShowCrashReports();
fullclear_ = true;
GetOpts(argc, argv);
if (!tuned_) PickDefaults();