diff --git a/src/utils/PETScWrapper.cpp b/src/utils/PETScWrapper.cpp
index f88bbfd8a6bfd9de92d153e54c68e111f0b692b6..18b16aa1435c2f27dc4d850c0727ddb4e259acb0 100644
--- a/src/utils/PETScWrapper.cpp
+++ b/src/utils/PETScWrapper.cpp
@@ -13,6 +13,7 @@ initialize([[maybe_unused]] int& argc, [[maybe_unused]] char* argv[])
 {
 #ifdef PUGS_HAS_PETSC
   PetscOptionsSetValue(NULL, "-no_signal_handler", "true");
+  PetscOptionsSetValue(NULL, "-fp_trap", "false");
   PetscInitialize(&argc, &argv, 0, 0);
 #endif   // PUGS_HAS_PETSC
 }
diff --git a/src/utils/PugsUtils.cpp b/src/utils/PugsUtils.cpp
index d35fa95f43cb03810814ec6b62ed039842de1289..696dd8f86a2409bb5c456beeecb3063263d4f699 100644
--- a/src/utils/PugsUtils.cpp
+++ b/src/utils/PugsUtils.cpp
@@ -79,6 +79,8 @@ std::string
 initialize(int& argc, char* argv[])
 {
   parallel::Messenger::create(argc, argv);
+  bool enable_fpe     = true;
+  bool enable_signals = true;
 
   std::string filename;
   {
@@ -100,10 +102,8 @@ initialize(int& argc, char* argv[])
     bool enable_color = true;
     app.add_flag("--color,!--no-color", enable_color, "Colorize console output [default: true]");
 
-    bool enable_fpe = true;
     app.add_flag("--fpe,!--no-fpe", enable_fpe, "Trap floating point exceptions [default: true]");
 
-    bool enable_signals = true;
     app.add_flag("--signal,!--no-signal", enable_signals, "Catches signals [default: true]");
 
     bool pause_on_error = false;
@@ -119,14 +119,15 @@ initialize(int& argc, char* argv[])
     }
 
     ConsoleManager::init(enable_color);
-    FPEManager::init(enable_fpe);
     SignalManager::setPauseForDebug(pause_on_error);
-    SignalManager::init(enable_signals);
   }
 
   PETScWrapper::initialize(argc, argv);
   SLEPcWrapper::initialize(argc, argv);
 
+  FPEManager::init(enable_fpe);
+  SignalManager::init(enable_signals);
+
   setDefaultOMPEnvironment();
   Kokkos::initialize(argc, argv);
   std::cout << "----------------- " << rang::fg::green << "pugs exec info" << rang::fg::reset