@@ -42,7 +42,17 @@ struct AsanOptions {
42
42
43
43
private:
44
44
AsanOptions (logger::Logger &logger) {
45
- auto OptionsEnvMap = getenv_to_map (" UR_LAYER_ASAN_OPTIONS" );
45
+ std::optional<EnvVarMap> OptionsEnvMap;
46
+ try {
47
+ OptionsEnvMap = getenv_to_map (" UR_LAYER_ASAN_OPTIONS" );
48
+ } catch (const std::invalid_argument &e) {
49
+ std::stringstream SS;
50
+ SS << " <SANITIZER>[ERROR]: " ;
51
+ SS << e.what ();
52
+ logger.always (SS.str ().c_str ());
53
+ die (" Sanitizer failed to parse options.\n " );
54
+ }
55
+
46
56
if (!OptionsEnvMap.has_value ()) {
47
57
return ;
48
58
}
@@ -74,8 +84,8 @@ struct AsanOptions {
74
84
Opt = false ;
75
85
} else {
76
86
std::stringstream SS;
77
- SS << " <SANITIZER>[ERROR]: \" " << Name << " \" is set to \" "
78
- << Value << " \" , which is not an valid setting. " ;
87
+ SS << " \" " << Name << " \" is set to \" " << Value
88
+ << " \" , which is not an valid setting. " ;
79
89
SS << " Acceptable input are: for enable, use:" ;
80
90
for (auto &S : TrueStrings) {
81
91
SS << " \" " << S << " \" " ;
@@ -86,7 +96,8 @@ struct AsanOptions {
86
96
SS << " \" " << S << " \" " ;
87
97
}
88
98
SS << " ." ;
89
- die (SS.str ().c_str ());
99
+ logger.error (SS.str ().c_str ());
100
+ die (" Sanitizer failed to parse options.\n " );
90
101
}
91
102
}
92
103
};
@@ -106,9 +117,10 @@ struct AsanOptions {
106
117
}
107
118
MaxQuarantineSizeMB = temp_long;
108
119
} catch (...) {
109
- die (" <SANITIZER>[ERROR]: \" quarantine_size_mb\" should be "
110
- " an positive integer that smaller than or equal to "
111
- " 4294967295." );
120
+ logger.error (" \" quarantine_size_mb\" should be "
121
+ " an integer in range[0, {}]." ,
122
+ UINT32_MAX);
123
+ die (" Sanitizer failed to parse options.\n " );
112
124
}
113
125
}
114
126
@@ -120,10 +132,12 @@ struct AsanOptions {
120
132
if (MinRZSize < 16 ) {
121
133
MinRZSize = 16 ;
122
134
logger.warning (" Trying to set redzone size to a "
123
- " value less than 16 is ignored" );
135
+ " value less than 16 is ignored. " );
124
136
}
125
137
} catch (...) {
126
- die (" <SANITIZER>[ERROR]: \" redzone\" should be an integer" );
138
+ logger.error (
139
+ " \" redzone\" should be an integer in range[0, 16]." );
140
+ die (" Sanitizer failed to parse options.\n " );
127
141
}
128
142
}
129
143
@@ -135,10 +149,12 @@ struct AsanOptions {
135
149
if (MaxRZSize > 2048 ) {
136
150
MaxRZSize = 2048 ;
137
151
logger.warning (" Trying to set max redzone size to a "
138
- " value greater than 2048 is ignored" );
152
+ " value greater than 2048 is ignored. " );
139
153
}
140
154
} catch (...) {
141
- die (" <SANITIZER>[ERROR]: \" max_redzone\" should be an integer" );
155
+ logger.error (
156
+ " \" max_redzone\" should be an integer in range[0, 2048]." );
157
+ die (" Sanitizer failed to parse options.\n " );
142
158
}
143
159
}
144
160
}
0 commit comments