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