@@ -10,8 +10,8 @@ mod linux {
1010 super :: * ,
1111 error_graph:: ErrorList ,
1212 minidump_writer:: {
13- minidump_writer:: STOP_TIMEOUT , module_reader , ptrace_dumper :: PtraceDumper ,
14- LINUX_GATE_LIBRARY_NAME ,
13+ minidump_writer:: { MinidumpWriter , MinidumpWriterConfig } ,
14+ module_reader , LINUX_GATE_LIBRARY_NAME ,
1515 } ,
1616 nix:: {
1717 sys:: mman:: { mmap_anonymous, MapFlags , ProtFlags } ,
@@ -40,12 +40,8 @@ mod linux {
4040 let ppid = getppid ( ) ;
4141 fail_on_soft_error ! (
4242 soft_errors,
43- PtraceDumper :: new_report_soft_errors(
44- ppid. as_raw( ) ,
45- STOP_TIMEOUT ,
46- Default :: default ( ) ,
47- & mut soft_errors,
48- ) ?
43+ MinidumpWriterConfig :: new( ppid. as_raw( ) , ppid. as_raw( ) )
44+ . build_for_testing( & mut soft_errors) ?
4945 ) ;
5046 Ok ( ( ) )
5147 }
@@ -54,12 +50,8 @@ mod linux {
5450 let ppid = getppid ( ) ;
5551 let dumper = fail_on_soft_error ! (
5652 soft_errors,
57- PtraceDumper :: new_report_soft_errors(
58- ppid. as_raw( ) ,
59- STOP_TIMEOUT ,
60- Default :: default ( ) ,
61- & mut soft_errors,
62- ) ?
53+ MinidumpWriterConfig :: new( ppid. as_raw( ) , ppid. as_raw( ) )
54+ . build_for_testing( & mut soft_errors) ?
6355 ) ;
6456 test ! ( !dumper. threads. is_empty( ) , "No threads" ) ;
6557 test ! (
@@ -87,18 +79,11 @@ mod linux {
8779 use minidump_writer:: mem_reader:: MemReader ;
8880
8981 let ppid = getppid ( ) . as_raw ( ) ;
90- let mut dumper = fail_on_soft_error ! (
82+ let dumper = fail_on_soft_error ! (
9183 soft_errors,
92- PtraceDumper :: new_report_soft_errors(
93- ppid,
94- STOP_TIMEOUT ,
95- Default :: default ( ) ,
96- & mut soft_errors
97- ) ?
84+ MinidumpWriterConfig :: new( ppid, ppid) . build_for_testing( & mut soft_errors) ?
9885 ) ;
9986
100- fail_on_soft_error ! ( soft_errors, dumper. suspend_threads( & mut soft_errors) ) ;
101-
10287 // We support 3 different methods of reading memory from another
10388 // process, ensure they all function and give the same results
10489
@@ -141,30 +126,27 @@ mod linux {
141126 }
142127
143128 let stack_res =
144- PtraceDumper :: copy_from_process ( ppid, stack_var, std:: mem:: size_of :: < usize > ( ) ) ?;
129+ MinidumpWriter :: copy_from_process ( ppid, stack_var, std:: mem:: size_of :: < usize > ( ) ) ?;
145130
146131 test ! ( stack_res == expected_stack, "stack var not correct" ) ;
147132
148133 let heap_res =
149- PtraceDumper :: copy_from_process ( ppid, heap_var, std:: mem:: size_of :: < usize > ( ) ) ?;
134+ MinidumpWriter :: copy_from_process ( ppid, heap_var, std:: mem:: size_of :: < usize > ( ) ) ?;
150135
151136 test ! ( heap_res == expected_heap, "heap var not correct" ) ;
152137
153- fail_on_soft_error ! ( soft_errors , dumper. resume_threads ( & mut soft_errors ) ) ;
138+ drop ( dumper) ;
154139
155140 Ok ( ( ) )
156141 }
157142
158143 fn test_find_mappings ( addr1 : usize , addr2 : usize ) -> Result < ( ) > {
159144 let ppid = getppid ( ) ;
145+
160146 let dumper = fail_on_soft_error ! (
161147 soft_errors,
162- PtraceDumper :: new_report_soft_errors(
163- ppid. as_raw( ) ,
164- STOP_TIMEOUT ,
165- Default :: default ( ) ,
166- & mut soft_errors,
167- ) ?
148+ MinidumpWriterConfig :: new( ppid. as_raw( ) , ppid. as_raw( ) )
149+ . build_for_testing( & mut soft_errors) ?
168150 ) ;
169151 dumper
170152 . find_mapping ( addr1)
@@ -185,16 +167,9 @@ mod linux {
185167
186168 let mut dumper = fail_on_soft_error ! (
187169 soft_errors,
188- PtraceDumper :: new_report_soft_errors(
189- ppid,
190- STOP_TIMEOUT ,
191- Default :: default ( ) ,
192- & mut soft_errors
193- ) ?
170+ MinidumpWriterConfig :: new( ppid, ppid) . build_for_testing( & mut soft_errors) ?
194171 ) ;
195172
196- fail_on_soft_error ! ( soft_errors, dumper. suspend_threads( & mut soft_errors) ) ;
197-
198173 let mut found_exe = None ;
199174 for ( idx, mapping) in dumper. mappings . iter ( ) . enumerate ( ) {
200175 if mapping. name . as_ref ( ) . map ( |x| x. into ( ) ) . as_ref ( ) == Some ( & exe_name) {
@@ -205,7 +180,7 @@ mod linux {
205180 let idx = found_exe. unwrap ( ) ;
206181 let module_reader:: BuildId ( id) = dumper. from_process_memory_for_index ( idx) ?;
207182
208- fail_on_soft_error ! ( soft_errors , dumper. resume_threads ( & mut soft_errors ) ) ;
183+ drop ( dumper) ;
209184
210185 assert ! ( !id. is_empty( ) ) ;
211186 assert ! ( id. iter( ) . any( |& x| x > 0 ) ) ;
@@ -216,12 +191,8 @@ mod linux {
216191 // Now check that PtraceDumper interpreted the mappings properly.
217192 let dumper = fail_on_soft_error ! (
218193 soft_errors,
219- PtraceDumper :: new_report_soft_errors(
220- getppid( ) . as_raw( ) ,
221- STOP_TIMEOUT ,
222- Default :: default ( ) ,
223- & mut soft_errors,
224- ) ?
194+ MinidumpWriterConfig :: new( getppid( ) . as_raw( ) , getppid( ) . as_raw( ) )
195+ . build_for_testing( & mut soft_errors) ?
225196 ) ;
226197 let mut mapping_count = 0 ;
227198 for map in & dumper. mappings {
@@ -244,29 +215,20 @@ mod linux {
244215
245216 fn test_linux_gate_mapping_id ( ) -> Result < ( ) > {
246217 let ppid = getppid ( ) . as_raw ( ) ;
247- let mut dumper = fail_on_soft_error ! (
218+ let dumper = fail_on_soft_error ! (
248219 soft_errors,
249- PtraceDumper :: new_report_soft_errors(
250- ppid,
251- STOP_TIMEOUT ,
252- Default :: default ( ) ,
253- & mut soft_errors
254- ) ?
220+ MinidumpWriterConfig :: new( ppid, ppid) . build_for_testing( & mut soft_errors) ?
255221 ) ;
256222 let mut found_linux_gate = false ;
257223 for mapping in dumper. mappings . clone ( ) {
258224 if mapping. name == Some ( LINUX_GATE_LIBRARY_NAME . into ( ) ) {
259225 found_linux_gate = true ;
260226
261- fail_on_soft_error ! ( soft_errors, dumper. suspend_threads( & mut soft_errors) ) ;
262-
263227 let module_reader:: BuildId ( id) =
264- PtraceDumper :: from_process_memory_for_mapping ( & mapping, ppid) ?;
228+ MinidumpWriter :: from_process_memory_for_mapping ( & mapping, ppid) ?;
265229 test ! ( !id. is_empty( ) , "id-vec is empty" ) ;
266230 test ! ( id. iter( ) . any( |& x| x > 0 ) , "all id elements are 0" ) ;
267-
268- fail_on_soft_error ! ( soft_errors, dumper. resume_threads( & mut soft_errors) ) ;
269-
231+ drop ( dumper) ;
270232 break ;
271233 }
272234 }
@@ -278,12 +240,7 @@ mod linux {
278240 let ppid = getppid ( ) . as_raw ( ) ;
279241 let dumper = fail_on_soft_error ! (
280242 soft_errors,
281- PtraceDumper :: new_report_soft_errors(
282- ppid,
283- STOP_TIMEOUT ,
284- Default :: default ( ) ,
285- & mut soft_errors
286- ) ?
243+ MinidumpWriterConfig :: new( ppid, ppid) . build_for_testing( & mut soft_errors) ?
287244 ) ;
288245 let linux_gate_loc = dumper. auxv . get_linux_gate_address ( ) . unwrap ( ) ;
289246 test ! ( linux_gate_loc != 0 , "linux_gate_loc == 0" ) ;
@@ -332,7 +289,7 @@ mod linux {
332289 // One less than the requested amount, as the main thread counts as well
333290 for id in 1 ..num {
334291 std:: thread:: Builder :: new ( )
335- . name ( format ! ( "thread_{}" , id ) )
292+ . name ( format ! ( "thread_{id}" ) )
336293 . spawn ( || {
337294 println ! ( "1" ) ;
338295 loop {
0 commit comments