tests: gracefully exit threads
Using exit() is throwing random exceptions
This commit is contained in:
parent
9af762c0ac
commit
0cf2989b6c
2 changed files with 20 additions and 6 deletions
|
@ -11,6 +11,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <atomic>
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
if (argc < 2 || argc > 3) {
|
if (argc < 2 || argc > 3) {
|
||||||
|
@ -111,9 +112,11 @@ int main(int argc, char **argv) {
|
||||||
|
|
||||||
std::vector<std::thread> threads(nthread);
|
std::vector<std::thread> threads(nthread);
|
||||||
|
|
||||||
|
std::atomic_int errcode = {};
|
||||||
|
|
||||||
for (int i = 0; i < nthread; ++i) {
|
for (int i = 0; i < nthread; ++i) {
|
||||||
threads[i] = std::thread([i, nthread, ctx]() {
|
threads[i] = std::thread([i, nthread, ctx, &errcode]() {
|
||||||
for (uint32_t cp = i; cp < 0x00110000; cp += nthread) {
|
for (uint32_t cp = i; !errcode && cp < 0x00110000; cp += nthread) {
|
||||||
//if (!( // NOLINT
|
//if (!( // NOLINT
|
||||||
// (cp < 0x03 || cp > 0x05) && cp != 0x0b && cp != 0x11 &&
|
// (cp < 0x03 || cp > 0x05) && cp != 0x0b && cp != 0x11 &&
|
||||||
// (cp < 0x13 || cp > 0x17) && cp != 0x19 &&
|
// (cp < 0x13 || cp > 0x17) && cp != 0x19 &&
|
||||||
|
@ -130,7 +133,7 @@ int main(int argc, char **argv) {
|
||||||
if (cp != 9601 && str != check) {
|
if (cp != 9601 && str != check) {
|
||||||
fprintf(stderr, "error: codepoint 0x%x detokenizes to '%s'(%zu) instead of '%s'(%zu)\n",
|
fprintf(stderr, "error: codepoint 0x%x detokenizes to '%s'(%zu) instead of '%s'(%zu)\n",
|
||||||
cp, check.c_str(), check.length(), str.c_str(), str.length());
|
cp, check.c_str(), check.length(), str.c_str(), str.length());
|
||||||
std::exit(3);
|
errcode = 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -139,6 +142,10 @@ int main(int argc, char **argv) {
|
||||||
for (auto & t : threads) {
|
for (auto & t : threads) {
|
||||||
t.join();
|
t.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(errcode) {
|
||||||
|
return errcode;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
llama_free_model(model);
|
llama_free_model(model);
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <atomic>
|
||||||
|
|
||||||
int main(int argc, char ** argv) {
|
int main(int argc, char ** argv) {
|
||||||
if (argc < 2) {
|
if (argc < 2) {
|
||||||
|
@ -81,9 +82,11 @@ int main(int argc, char ** argv) {
|
||||||
|
|
||||||
std::vector<std::thread> threads(nthread);
|
std::vector<std::thread> threads(nthread);
|
||||||
|
|
||||||
|
std::atomic_int errcode = {};
|
||||||
|
|
||||||
for (int i = 0; i < nthread; ++i) {
|
for (int i = 0; i < nthread; ++i) {
|
||||||
threads[i] = std::thread([i, nthread, ctx]() {
|
threads[i] = std::thread([i, nthread, ctx, &errcode]() {
|
||||||
for (uint32_t cp = i; cp < 0x00110000; cp += nthread) {
|
for (uint32_t cp = i; !errcode && cp < 0x00110000; cp += nthread) {
|
||||||
//if (cp >= 0xd800 && cp <= 0xdfff) {
|
//if (cp >= 0xd800 && cp <= 0xdfff) {
|
||||||
// continue;
|
// continue;
|
||||||
//}
|
//}
|
||||||
|
@ -94,7 +97,7 @@ int main(int argc, char ** argv) {
|
||||||
if (cp != 9601 && str != check) {
|
if (cp != 9601 && str != check) {
|
||||||
fprintf(stderr, "error: codepoint 0x%x detokenizes to '%s'(%zu) instead of '%s'(%zu)\n",
|
fprintf(stderr, "error: codepoint 0x%x detokenizes to '%s'(%zu) instead of '%s'(%zu)\n",
|
||||||
cp, check.c_str(), check.length(), str.c_str(), str.length());
|
cp, check.c_str(), check.length(), str.c_str(), str.length());
|
||||||
std::exit(3);
|
errcode = 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -103,6 +106,10 @@ int main(int argc, char ** argv) {
|
||||||
for (auto & t : threads) {
|
for (auto & t : threads) {
|
||||||
t.join();
|
t.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(errcode) {
|
||||||
|
return errcode;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
llama_free_model(model);
|
llama_free_model(model);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue