using namespace snort;
using namespace std;
-#define FLUSHER_THREAD_NAME "std_connector.flusher"
+#define FLUSHER_AFFINITY_NAME "std_connector.flusher"
+#define FLUSHER_THREAD_NAME "snort3.stdc_fl"
static void flusher(const SnortConfig* initial_config, const char* output,
mutex& rings_mutex, list<Ring2>& rings, atomic_flag& latest, atomic_flag& run)
{
ThreadConfig *thread_config = initial_config->thread_config;
- thread_config->implement_named_thread_affinity(FLUSHER_THREAD_NAME);
+ thread_config->implement_named_thread_affinity(FLUSHER_AFFINITY_NAME);
SET_THREAD_NAME(pthread_self(), FLUSHER_THREAD_NAME);
SnortConfig local_config;
#include "log/messages.h"
#include "profiler/profiler_defs.h"
+#include "utils/util.h"
#include "tcp_connector_module.h"
{
run_thread.store(true, std::memory_order_relaxed);
receive_thread = new std::thread(&TcpConnector::receive_processing_thread, this);
+ SET_THREAD_NAME(receive_thread->native_handle(), "snort3.tcp_rx");
}
void TcpConnector::stop_receive_thread()
#include "log/messages.h"
#include "profiler/profiler_defs.h"
+#include "utils/util.h"
#include "unixdomain_connector_module.h"
static void start_retry_thread(const UnixDomainConnectorConfig& cfg, size_t idx, UnixDomainConnectorUpdateHandler update_handler = nullptr) {
std::thread retry_thread(connection_retry_handler, cfg, idx, update_handler, nullptr);
+ SET_THREAD_NAME(retry_thread.native_handle(), "snort3.ud_retry");
retry_thread.detach();
}
void UnixDomainConnector::start_receive_thread() {
run_thread.store(true, std::memory_order_relaxed);
receive_thread = new std::thread(&UnixDomainConnector::receive_processing_thread, this);
+ SET_THREAD_NAME(receive_thread->native_handle(), "snort3.ud_recv");
}
void UnixDomainConnector::stop_receive_thread() {
should_accept = true;
accept_thread = new std::thread([this, handler = std::move(handler), config]()
{
+ SET_THREAD_NAME(pthread_self(), "snort3.ud_acpt");
sock_fd = socket(AF_UNIX, SOCK_STREAM, 0);
if (sock_fd == -1) {
ErrorMessage("UnixDomainC: socket error: %s \n", strerror(errno));
if (cfg.conn_retries) {
connection_thread = new std::thread(connection_retry_handler, cfg, idx, update_handler, this);
+ SET_THREAD_NAME(connection_thread->native_handle(), "snort3.ud_conn");
return;
} else {
close(sfd);
}
connection_thread = new std::thread(connection_retry_handler, cfg, idx, update_handler, this);
+ SET_THREAD_NAME(connection_thread->native_handle(), "snort3.ud_conn");
}
void UnixDomainConnectorReconnectHelper::set_reconnect_enabled(bool enabled)
}
for ( unsigned i = 0; i < max; ++i )
- workers.push_back(new std::thread(compile_mpse, sc, i, &count));
+ {
+ auto* w = new std::thread(compile_mpse, sc, i, &count);
+ SET_THREAD_NAME(w->native_handle(), "snort3.compile");
+ workers.push_back(w);
+ }
for ( auto* w : workers )
{
#include "main/thread_config.h"
#include "managers/module_manager.h"
#include "utils/stats.h"
+#include "utils/util.h"
using namespace snort;
ModuleManager::add_thread_stats_entry("search_engine");
ModuleManager::add_thread_stats_entry("detection");
req->thread = new std::thread(worker, req, sc, i++);
+ SET_THREAD_NAME(req->thread->native_handle(), "snort3.regex");
}
}
// Only one writer thread supported
void FileCapture::writer_thread()
{
- SET_THREAD_NAME(pthread_self(), "snort.filecap");
+ SET_THREAD_NAME(pthread_self(), "snort3.filecap");
while (true)
{
{
run_thread.store(true);
worker_thread = std::make_unique<std::thread>(&MPDataBus::worker_thread_func, this);
+ SET_THREAD_NAME(worker_thread->native_handle(), "snort3.mp_dbus");
}
void MPDataBus::stop_worker_thread()
snort::ThreadConfig* thread_config = snort::SnortConfig::get_conf()->thread_config;
thread_config->implement_named_thread_affinity("BatchedLoggerWriter");
writer_thread = std::thread(writer_thread_func);
- SET_THREAD_NAME(writer_thread.native_handle(), "snort.logger");
+ SET_THREAD_NAME(writer_thread.native_handle(), "snort3.logger");
thread_config->implement_thread_affinity(STHREAD_TYPE_MAIN, snort::ThreadConfig::DEFAULT_THREAD_ID);
std::atexit(BatchedLogManager::shutdown);
#include "log_errors.h"
#include <syslog.h>
+#include <unistd.h>
#include <atomic>
#include <cassert>
// -----------------------------
// bail now if we are reentering
if ( already_fatal )
- exit(1);
+ {
+ fflush(NULL);
+ _exit(1);
+ }
else
already_fatal = 1;
// -----------------------------
else
#endif
{
- // FIXIT-M this makes no sense from main thread
- exit(EXIT_FAILURE);
+ fflush(NULL);
+ _exit(EXIT_FAILURE);
}
}
{
config_dumper = new std::thread(generate_config_dump, config_data_to_dump,
time(nullptr), SnortConfig::get_reload_id(), dump_config_file);
+ SET_THREAD_NAME(config_dumper->native_handle(), "snort3.cfgdump");
}
else
{
if (!hwloc_bitmap_isequal(current_cpuset, desired_cpuset))
{
LogMessage("Binding %s to CPU %s.\n", stringify_thread(type, id).c_str(), s);
- thread_name_suffix = ".core-";
+ // "cX" = thread bound to core X
+ thread_name_suffix = "-c";
thread_name_suffix.append(s);
}
else
{
- thread_name_suffix = ".ins-";
+ // "iX" = unbound instance number X
+ thread_name_suffix = "-i";
thread_name_suffix.append(std::to_string(id));
}
- // Thread name is snort.ins-X for unpinned threads, and snort.core-X
- // for threads pinned to CPU x
if (type == STHREAD_TYPE_MAIN)
{
- thread_name = "snort3";
+ thread_name = "snort3.main";
thread_name_suffix = "";
}
else
{
- thread_name = "snort";
+ thread_name = "s3.pkt";
}
thread_name.append(thread_name_suffix);
{
char* fallback_s = nullptr;
hwloc_bitmap_list_asprintf(&fallback_s, process_cpuset);
- thread_name = "snort.core-";
+ // "cX" = thread bound to core X (fallback cpuset)
+ thread_name = "s3.pkt-c";
thread_name.append(fallback_s ? fallback_s : "?");
SET_THREAD_NAME(pthread_self(), thread_name.c_str());
if (fallback_s) free(fallback_s);
#include "log/messages.h"
#include "main/snort.h"
#include "main/snort_config.h"
+#include "utils/util.h"
static std::mutex _receive_mutex;
static std::shared_mutex _connection_update_mutex;
assert(!this->consume_thread);
this->consume_thread = new std::thread(&MPUnixDomainTransport::process_messages_from_side_channels, this);
+ SET_THREAD_NAME(this->consume_thread->native_handle(), "snort3.mp_recv");
}
void MPUnixDomainTransport::cleanup_side_channels()