Index: uspace/lib/cpp/include/impl/system_error.hpp
===================================================================
--- uspace/lib/cpp/include/impl/system_error.hpp	(revision a1c35cc64c6d6c6777dd1cbae7d42be66e19b559)
+++ uspace/lib/cpp/include/impl/system_error.hpp	(revision 4fba7ada6e5216277a3183f4a0fbb2c5b1153db0)
@@ -31,4 +31,5 @@
 
 #include <internal/aux.hpp>
+#include <internal/stringfwd.hpp>
 #include <stdexcept>
 
@@ -340,9 +341,6 @@
             const error_code& code() const noexcept;
 
-            const char* what() const noexcept override;
-
         private:
             error_code code_;
-            string what_;
     };
 
Index: uspace/lib/cpp/src/system_error.cpp
===================================================================
--- uspace/lib/cpp/src/system_error.cpp	(revision a1c35cc64c6d6c6777dd1cbae7d42be66e19b559)
+++ uspace/lib/cpp/src/system_error.cpp	(revision 4fba7ada6e5216277a3183f4a0fbb2c5b1153db0)
@@ -27,4 +27,5 @@
  */
 
+#include <cstring>
 #include <functional>
 #include <string>
@@ -263,27 +264,27 @@
 
     system_error::system_error(error_code ec, const string& what_arg)
-        : code_{ec}, what_{what_arg}
+        : runtime_error{what_arg.c_str()}, code_{ec}
     { /* DUMMY BODY */ }
 
     system_error::system_error(error_code ec, const char* what_arg)
-        : code_{ec}, what_{what_arg}
+        : runtime_error{what_arg}, code_{ec}
     { /* DUMMY BODY */ }
 
     system_error::system_error(error_code ec)
-        : code_{ec}, what_{}
+        : runtime_error{"system_error"}, code_{ec}
     { /* DUMMY BODY */ }
 
     system_error::system_error(int code, const error_category& cat,
                                const string& what_arg)
-        : code_{code, cat}, what_{what_arg}
+        : runtime_error{what_arg.c_str()}, code_{code, cat}
     { /* DUMMY BODY */ }
 
     system_error::system_error(int code, const error_category& cat,
                                const char* what_arg)
-        : code_{code, cat}, what_{what_arg}
+        : runtime_error{what_arg}, code_{code, cat}
     { /* DUMMY BODY */ }
 
     system_error::system_error(int code, const error_category& cat)
-        : code_{code, cat}, what_{}
+        : runtime_error{"system_error"}, code_{code, cat}
     { /* DUMMY BODY */ }
 
@@ -292,8 +293,3 @@
         return code_;
     }
-
-    const char* system_error::what() const noexcept
-    {
-        return what_.c_str();
-    }
 }
