forked from dtrace4linux/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathChanges
More file actions
3165 lines (1968 loc) · 100 KB
/
Changes
File metadata and controls
3165 lines (1968 loc) · 100 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Tue Oct 9 22:07:16 2012 fox
779* ctf_struct.c: Add support for <linux/migrate.h> which can
cause ctfconvert to fail due to a missing structure(?)
(Dan Mick)
778* tools/mkport.pl: Add support for HAVE_LINUX_MIGRATE_H
Thu Aug 23 07:47:40 2012 fox
777* tools/mkport.c, libproc/common/Pcontrol.c:
Fix for PTRACE_O_TRACEEXEC which may not exist
in <sys/ptrace.h> (Centos 5.3).
776* driver/x_call.c: Fix for IPI on archlinux-3.4/i386
Wed Aug 22 23:57:50 2012 fox
775* driver/dtrace_linux.c, tools/load.pl: Remove some of the
legacy symbols as we dont need them anymore.
Mon Aug 20 22:03:03 2012 fox
774* driver/fbt_linux.c: Better fix for skipping .init section
of drivers loaded after dtrace - avoids paniccing if
we probe on them (eg 'dtrace -n fbt:isofs::').
773* driver/signal.c: Put in the missing assembler code for i386.
Sun Aug 19 16:05:01 2012 fox
772* scripts/dt.pl: Rename to dt.
771* scripts/dt.pl: Add 'dt func <pid>'
770* archive: 1.0145
769* libproc/common/Pcontrol.c: Some changes to Pxcreate to handle
parent/child sync with a forked child from 'dtrace -c cmd'.
Sat Aug 18 16:15:47 2012 fox
768* driver/signal.c, fasttrap_isa.c, dtrace_subr.c, and others:
Intercept process signal delivery. If we are inside the
scratch area for the PID provider, reset PC to the original
instruction. This stops user app core dumping on return from
a signal handler because we would return to the scratch area
but the scratch area will most likely be overwritten with
a later instruction.
Fri Aug 17 08:46:57 2012 fox
767* driver/x_call.c: Fix for Debian-6 - find any apic outlet to
invoke.
766* tools/mksyscall.pl: Fix for Debian-6.
765* systrace.c: Fixes for Debian-6.
Sat Aug 11 10:05:56 2012 fox
764* fasttrap_isa.c: Fix the last issue properly - 2 styles
of indexed instructions werent being handled
properly. Now they are.
763* archive: 1.0144
Thu Aug 9 22:48:18 2012 fox
762* fasttrap_isa.c, fasttrap.c: Fix handling of
41 ff 14 c4 callq *(%r12,%rax,8)
instruction.
Add private page for the scratch buffer trampoline.
Mon Aug 6 20:56:11 2012 fox
761* Archive: 1.0143
760* driver/systrace.c: Fix for 32b binaries on 64b kernel for
Centos/RedHat releases.
Sun Aug 5 11:50:41 2012 fox
759* tools/mkport.h: Fix for FUNC_DUMP_TRACE_ARGS on centos5.6.
758* dtrace_asm.c: dtrace_casptr: Add a check that target is writable
and avoid paniccing kernel when it isnt (eg syscall tracing,
caused by mem_set_writable code not working). Hm. Undo
this change - we can get deadlock if we trigger a violation.
Or something else - not sure what it is.
757* fasttrap_isa.c, dtrace_linux.c: When patching in PID provider
instructions, ensure page is executable.
Centos5.3 2.6.18-128.el5 fix
Sat Aug 4 15:16:00 2012 fox
756* cmd/ctfconvert: Doesnt depend on -lbfd
755* libdtrace/dt_link.c: Allow us to avoid deleting the temp file.
Fix file perms issue.
754* libdtrace/dt_subr.c: dt_alloc: Use calloc() and not malloc()
as this can cause bad ELF file generation.
753* linux/sys/regset.h: Reorder the amd64 registers to match
the interrupt trap, so that single stepping pid probes work
properly.
752* driver/fasttrap.c: Significant speed up for /proc/dtrace/fasttrap.
Not ideal or linear, but better than before.
Fri Aug 3 11:40:18 2012 fox
751* driver/intr_x86-64.S, intr_x86-32.S: Dont corrupt RAX register on
an INT3 trap. Was breaking pid provider/fasttrap.
Thu Aug 2 08:25:51 2012 fox
750* driver/x_call.c: xcall_init() Ensure xcalls[] is setup even
if no APIC (Centos 5.5 issue).
Wed Aug 1 15:24:01 2012 fox
749* libproc/common/Psymtab.c: Fix for _dl_initial_error_catch_tsd on
Centos 5.3.
748* driver/taskq.c: Fix for centos 5.3 (2.6.18-129) where invoking
workqueue callback derefs null ptr.
747* cmd/ctfconvert/tdata.c: Avoid core dump in tdesc_layouthash
if we have a struct/union with no members (fwd def/ref?)
Tue Jul 31 22:00:40 2012 fox
746* driver/taskq.c: Fix for centos 5 GPL function issue.
745* Psymtab.c: Fix for older kernels where AT_BASE auxv vector
is not defined, so couldnt use 'dtrace -n pidXXX:::' on them.
(Centos 5).
744* dtrace_linux.c: mem_set_writable: Fix (clflush) for centos
kernel.
Mon Jul 30 08:28:16 2012 fox
743* Archive: 1.0142
742* driver/dtrace_linux.c: Fix issue with determining data model of 32b
proc on 64b kernel.
741* ctl.c, ctf_struct.h: Build fixes for older kernels.
740* taskq.c: Add older kernel support.
Sun Jul 29 18:06:43 2012 fox
739* libproc/common/Psymtab.c: Fix for reading /proc/pid/auxv for
a 32b proc on a 64b kernel.
738* driver/dtrace_linux.c: dtrace_data_model: Implement this
for 64b systems running 32b binaries.
737* driver/dtrace_linux.c: Fix issue affecting 32b binaries
on 32b kernel (fasttrap miscomputing instr sizes).
Sat Jul 28 08:41:53 2012 fox
736* All drivers: Add ".owner = THIS_MODULE", to protect from
attempts to unload driver whilst still have open references.
735* prov_common.c: Add proc:::fault probe.
734* Psymtab.c: Fix last change; wasnt handling 64b binaries properly.
Fri Jul 27 13:27:25 2012 fox
733* Archive: 1.0141
732* libproc/common/Pcontrol.c: Fix for setting the model of
a spawned process (32 vs 64 bit).
731* driver/ctl.c: Temp comment out the rcu_read_lock calls.
730* driver/ctl.c: Avoid direct reference to find_task_by_vpid.
729* driver/ctl.c: Add permission checking and update comments.
728* driver/systrace.c: Bug fix for /proc/dtrace/syscall - SIGSEGV
and confusion on 32b kernel.
727* libproc/common/Pcontrol.c: Use the /dev/dtrace_ctl driver instead
of ptrace(). We can now use PID provider on stopped jobs or even
procs being debugged in a debugger.
Thu Jul 26 08:33:03 2012 fox
726* archive: 1.0140
725* x_call.c: fix the xcalls[][] array. Some draconian measures
for dtrace_ack_apic() to avoid crashing VirtualBox.
724* x_call.c: Dynamically allocate xcalls[][] array according
to CPUs available, not max possible, to reduce memory footprint.
723* x_call.c: Redo native_apic_write_mem, for maximum portability
across releases. May not be brilliant if we have machines
without APICs (embedded?) but lets worry about them when
we find them. Fix #pragma warning.
722* missing.c, dtrace_linux.c: Rename clflush() and call it
dtrace_clflush() to avoid kernel version conflicts.
721* liblinux.c/proc2.c: When getting proc status, handle suspended
procs.
Wed Jul 25 23:19:13 2012 fox
720* driver/taskq.c: Dont GPF if on older kernel and cannot find
__alloc_workqueue_key_ptr. Works on Ubuntu 8 (2.6.28)
719* driver/x_call.c: Fix up some portability issues. Getting difficult
to ensure this works on all kernels, so having to be more
draconian.
Tue Jul 24 22:45:32 2012 fox
718* driver/x_call.c: GPL fix for 2.6.28 (Ubuntu 8/32) kernel.
Mon Jul 23 23:32:39 2012 fox
717* driver/x_call.c: Fix compile issue for 2.6.28 kernel (Ubuntu 8)
Sun Jul 22 17:30:38 2012 fox
716* Archive: 1.0139
715* Various: Tidied up some compiler warnings.
714* taskq.c, taskq.h, dtrace_linux.c, dtrace.c, fasttrap.c,
Fix the PID provider. It may not be perfect and needs lots of
testing, but some basic stuff works. Added the taskq_create()
and timeout functions to aid in probe garbage collection.
Fri Jul 20 00:15:04 2012 fox
713* tools/get-deps-fedora.sh: Add in 'make'.
Sat Jul 14 08:32:08 2012 fox
712* fasttrap_isa.c: FASTTRAP_T_COMMON: Setup addr for the
trapped instruction. (Previously, we had a TODO() item)
711* Pcontrol.c: Pread_live: do ptrace(PTRACE_ATTACH)/waitpid to
read someone elses memory, even if we are root. Seems to
make pid provider work *much* better.
710* driver/systrace.c: Fix typo for ia32_execve.
Wed Jul 11 23:02:16 2012 fox
709* driver/fasttrap_linux.c: Oops. Forgot to implement the ioctl()
interface, so PID provider couldnt get off the ground.
708* tools/load.pl: Make /dev/fasttrap world read/writable (not sure if
this is safe - but fasttrap will do its own perms checkings).
707* liblinux/proc2.c: Stupid read() call for /proc/%d/exe wrong way around.
Tue Jul 10 23:28:21 2012 fox
706* liblinux/gmatch.c: Result of match was reversed. Stopped pid
provider from kicking in.
Sun Jul 8 16:53:33 2012 fox
705* driver/tcp.c: Add udp:::send and udp:::receive (crude).
704* dtrace_linux.c: Fix the pmd hacks.
703* tcp.c: Add the accept and send/receive probes.
Thu Jul 5 22:42:36 2012 fox
702* tcp.c: Add tcp::connect-established.
701* prov_common.c: Add prov_add_callback, so we can start handling
argument specific callbacks.
Wed Jul 4 16:03:51 2012 fox
700* systrace.c: Cater for x32 syscalls not being enabled.
Sun Jul 1 16:22:42 2012 fox
699* driver/dtrace_linux.c: Specialise last fix for 3.2/3.3 kernels.
3.4 kernels dont have same glitch in the header files.
698* driver/dtrace_linux.c: Fix for i386 3.2 and above kernels
in page table manipulation.
Fri Jun 29 07:23:53 2012 fox
697* tools/load.pl: ALlow insmod to be in /usr/bin
696* vminfo.c: Fix for 3.4 kernels.
695* systrace.c: Fix for 3.4 kernels.
Sat Jun 2 22:37:18 2012 fox
694* README: Update install instructions to run tools/get-deps.pl
Thu May 24 18:57:48 2012 fox
693* makefile: Dont fail on "make install" if build/linux.ctf not available.
692* dtrace_linux.c: Make par_alloc/par_free do something - remove the
stub, because without this, we dont get probes for modules.
691* x_call.c: Put in a warning if NCPU is too large - can cause
problems at driver load time (Centos 6.2 has NCPU==4096 which
equates to more than 40MB of memory for the xcall array).
Mon Apr 9 16:01:07 2012 fox
690* driver/sdt_linux.c: Avoid compile errors on 3.3 kernels.
Thu Mar 1 21:52:36 2012 fox
689* driver/x_call.c: Centos 4.7 change
688* driver/dtrace.c: Avoid native_read_pmc for now - we dont need it
anyway.
687* driver/mutex.c: Put in workaround for Centos 4.7/Ubuntu 10.x
Fri Feb 24 19:21:39 2012 fox
686* driver/vminfo.c: Use CONFIG_COMPACTION to avoid compile time errors.
Fri Feb 17 23:43:53 2012 fox
685* driver/x_call.c, driver/dtrace_linux.c: Changes to workaround
issues with accessing the GPL symbol apic.
Thu Feb 16 21:00:48 2012 fox
684* x_call.c: Make it GPL compliant.
Sat Feb 11 10:25:20 2012 fox
683* driver/dtrace_linux.h: Mark as CDDL driver.
682* driver/prov_common.c: Mark as CDDL.
681* Archive: 1.0138
680* libdtrace/dt_cc.c, dt_impl.h, dt_open.c,
driver/dtrace.c, uts/common/sys/dtrace.h:
Add two experimental actions, so I can play (test1() and test2()).
679* dtrace_linux.c: par_alloc: Remove temporary stub-out - we werent
providing fbt module probes.
Mon Feb 6 21:47:58 2012 fox
678* libdtrace/dt_pid.c: dt_pid_usdt_mapping: Dont call
pr_open/pr_ioctl (see comment in the code). This allows
us to dtrace against a USDT probe application.
677* cmd/dtrace/dtrace.c: Add some env var defns to the usage.
Sun Feb 5 10:18:55 2012 fox
676* driver/intr.c: Fix license.
675* liblinux/proc2.c: Fix to avoid leaving target USDT proc in
a stopped state. (We did this due to bugs in libproc handling
but we shouldnt even if we are buggy). Not detecting 't'
process state properly.
674* Archive: 1.0137
673* dtrace_linux.c: Fix clflush issue in <= 2.6.21 kernels
672* tools/mkport.pl: Possible fix for SMP_CALL_FUNCTION_SINGLE_ARGS for
2.6.18 kernel.
671* driver/dtrace.c, driver/fasttrap_linux.c: Rip out all the fasstrap
helpers when unloading the driver, so we dont panic on a reload
if a USDT proc is still running.
Wed Feb 1 20:14:09 2012 fox
670* x_call.c: Fix for 2.6.24 kernel in cpumask_t
669* intr.c, tools/mkport.pl: Remove private vmalloc_sync_all if kernel
supports it.
668* linux/sys/privregs.h, tools/mkport.pl: Add autodetect of
BX vs EBX register for i386/2.6.24 type kernels.
667* driver/cyclic_linux.c: Fix for 2.6.24/debian-4 kernel.
666* driver/intr.c: Fix commenting error for older kernels.
Tue Jan 31 20:31:24 2012 fox
665* driver/toxic.c: Allow "page_fault" on earlier kernels.
664* driver/intr.c: Avoid problems when store_gdt/store_idt are
not available.
663* intr.c: Avoid problem when swapper_pg_dir is a #define on older
kernels.
662* mkport.pl, dtrace_linux.c: Dont compile against atomic_notifier_chain_register
if its not available.
Mon Jan 30 20:33:20 2012 fox
661* Archive: 1.0136
660* driver/dtrace_linux.c: Move intr_init() so we do it last, so
we can maximise the effect of ensuring all page tables are in sync.
659* driver/intr.c: Solution for the big impossible problem. Call
vmalloc_sync_all if possible, else a half-hearted emulation.
(We could just copy vmalloc_sync_all from the kernel but its
GPL, so we will think about a better solution based
on the kernel one; only a problem for older i386 kernels).
658* driver/intr-x86-32.S: Ensure we setup %gs for kernels >= 2.6.31.
Else user space apps die, because %gs can be corrupted when
returning back to app.
657* driver/dtrace.c: Remove workaround for what I thought was a compiler
bug. Avoid dtrace/memcpy_with_error - this was working around the
wrong issue. If the page fault handler works properly, then these
two things were bogus.
Wed Jan 25 21:49:03 2012 fox
656* tools/tty.pl: Fix defunct process leakage.
Wed Jan 11 23:33:51 2012 fox
655* instr_linux.c: Add -ltr instructions.
Fri Jan 6 22:11:05 2012 fox
654* instr_linux.c: Add support for detecting rd/wr to GDT and writing
to CR3 register. (Trying to find where the page table gets set
in the kernel to debug the page_fault problem for i386).
Mon Jan 2 23:16:35 2012 fox
653* driver/instr_linux.c: Add support for SIDT instruction and fix
encoding for LIDT.
Sat Dec 31 00:01:52 2011 fox
652* Archive: 1.0.135
651* driver/intr.c: Move the interrupt/idt code to its own file.
During driver init, swap out the old idt, make updates and
swap back in the new idt. Avoids funny crashes on driver
reload.
Added /proc/dtrace/idt driver to see the IDT table.
650* Archive: 1.0134
649* dtrace_linux.c: set_idt_entry: Grab the existing IDT
entry and just set the new address; dont lose/change the
dpl or type of the gate.
648* printf.c, dtrace_linux.c: Move set_console() to printf.c
647* makefile: Set LANG=C to avoid UTF-8 output from gcc.
Thu Dec 29 10:23:49 2011 fox
646* driver/intr_x86-32.S: Kernels >= 2.6.31 save the %GS
register on the stack, so we need to do this so that pt_regs
agrees. This fixes the horror of Ubuntu 11.10/i686 not
working properly.
Tue Dec 27 15:42:06 2011 fox
645* tools/get-deps.pl: Fix for Ubuntu 11.10/i686 - very broken
default install (missing /usr/include/sys).
644* linux/sys/elftypes.h: Fix for Ubuntu 11.10/i686.
643* tests/makefile: Handle 32-bit only system
Sun Dec 25 00:11:37 2011 fox
642* prov_common.c: Fire for all matching probes, not just the
first one, so that proc:::create and proc:::start will fire
together.
641* prov_common.c: Add support for
proc:::create - Fires when a new process is created.
proc:::start - Fires when process is created (same as create)
proc:::end - Fires on process termination
640* dtrace/dtrace_subr.c: When looking at the invop handlers, broadcast
the breakpoint to all invop handlers. This allows two providers
to sit on the same instruction.
639* fasttrap.c: Basic /proc/dtrace/fasttrap support.
Thu Dec 22 14:43:40 2011 fox
638* driver/intr_x86-32.S/intr_x86-64.S: We werent allowing
user breakpoint traps to be detected by USDT. This works
again.
637* Archive: 1.0133
636* cmd/dtrace/dtrace.c: Add support for -arch [i386|x86_64], similar
to Apple's dtrace.
635* usdt/c/makefile: Fix so that build/simple-c can run from anywhere.
634* libdtrace/dt_link.c: process_obj: For ELF32, write the SHT_REL entry
back to the appropriate section, not the SHT_RELA section. Seems
like a Solaris symmetry bug.
We now get USDT probes, but nobody is garbage collection them. Strange....
Wed Dec 21 09:19:53 2011 fox
633* dtrace.c: Temp remove the module-loaded chain because of fault
on a reload.
632* dtrace_linux.c: prfind(): Map pid to pid structure, and then
lookup.
631* ctl.c, driver_linux.c: Ensure fn_pid_task is setup, so prfind
doesnt die on USDT probe.
630* sys/dtrace.h: Fix for 32b build.
629* cmd/instr.c: Fix size_t issue.
Mon Dec 19 21:48:57 2011 fox
628* ctf_struct.c: Avoid referring to user32 struct so we can
compile on RH4 kernel.
627* dtrace_asm.c: Avoid compiler issue for old gcc/linux kernels
for VMREAD instruction.
Sun Dec 18 00:17:43 2011 fox
626* fbt_linux.c: Fix the arg0, .., arg4 args. We were relying
on solaris stack layout and not linux. (Thanks Nigel for pointing
this out).
Sat Dec 17 13:53:47 2011 fox
625* Archive: 1.0132
Fri Dec 16 20:27:53 2011 fox
624* sys/systm.h: Use correct sysconf() mapping #defines.
Mon Dec 12 23:58:33 2011 fox
623* dtrace.c, dtrace.h, dtrace_impl.h: Upgrade to Jolent 201111
extras. (ECB delayed removal, vmreg support).
Sun Dec 11 21:23:47 2011 fox
622* mutex.c: Call scheduler periodically to avoid deadlock when
number of dtrace's exceeds number of physical cpus.
Fri Dec 9 20:01:25 2011 fox
621* tools/tail.pl: Tool to do tail -f on any file, but specific
char special device files. Defaults to /proc/dtrace/trace.
620* Archive: 1.0131
619* dtrace.c: Added some monitoring around the kmem_free in
dtrace_state_destroy. Not needed, but something to watch.
618* x_call.c: Whilst priming the other cpus for action, attempt
to drawin any pending call against ourselves. Reduce the
poll time (ack_wait) a little, to try and gain better performance.
617* mutex.c: Dont disable interrupts for interrupt level mutexes.
(And, by implication, we dont need to restore them). Parameterise
this change.
Every 500m iterations, dump a "taking a long time message". Havent
seen this get hit.
Thu Dec 8 21:44:49 2011 fox
616* toxic.c: Re-enable more of the functions. We shouldnt have the old
problems anymore.
Wed Dec 7 20:57:52 2011 fox
615* tools/cpustuck.pl: Simple tool to look for stuck cpus.
Sun Dec 4 12:03:45 2011 fox
614* dtrace.c: Tone down the teardown logic to avoid two
dtraces fighting each other in a death match.
613* mutex.c: Dont break out of mutex_enter, and dont dump
stacks, as this can lead to inter-cpu corruption and assertion
failure.
612* dtrace.c: When hitting an assertion/panic issue, avoid
problems if another panic hits at the same time, to avoid
frantic console scrolling (we only allow the message once).
611* Archive: 1.0130
610* mutex.c: Dtrace is *NOT* expecting the mutexes to be recursive.
By disabling recursion, we fix the "dtrace -l & dtrace -l &"
issue which would cause deadlock or assertions. We increased
the break-out check - we need to turn this off. Under very
heavy load (eg two copies of fbt::: running), the mutex
might believe somethings broke and panic dtrace, effectively
disabling it.
609* dtrace_subr.c: Dump out the hdlr chain so we can diagnose
if fbt is not at the front of the list.
Sat Dec 3 08:56:10 2011 fox
608* dtrace_linux.c, fbt_linux.c: Arrange for fbt to be first in the
invop chain (optimisation).
607* x_call.c: Remove the per-interrupt xcall state. I think it was
potentially wrong, as we were using our interrupt state instead
of the other cpu state. I am not sure it matters, because
we try to call xslave2 during fast-teardown to empty any
pending buffers, so the amount of contention should be reduced.
606* instr_linux.c: Small parsing optimisation and opcode name fix
for repnz.
605* instr_linux.c: Add ud2 instructions to the INSTR provider. Would allow us to
take a probe when a BUG_ON is hit in the kernel. (The
kernel will kill the calling process anyhow and dump a stack,
but at least we could do something useful if we were interested).
604* prov_common.c: We were incorrectly assuming the file/line info
for the BUG_ON/ud2 instruction followed the instruction. This
caused random disassembly failure leading to problems when that
code was executed. (FC16 flush_exec_old function would kill
new processes).
Avoid print mangling when debug enabled for tracing disassembler.
Wed Nov 30 22:12:40 2011 fox
603* fbt_linux.c: Add an overrun indicator to /proc/dtrace/fbt ("*")
Tue Nov 29 09:00:40 2011 fox
602* cmd/instr: New utility for getting instruction encodings.
601* cyclic_linux.c: Avoid race conditions during timer closedown.
We might have the timer active whilst trying to kill it, and
corrupt memory leading to a panic later on.
600* dtrace_linux.c: Search fbt probes before instr, since we are likely
to hit them first. (Minor optimisation).
Mon Nov 28 22:18:05 2011 fox
599* sdt_linux.c, systrace.c: Avoid kernel memcpy function (cleanup
rather than a bug fix).
598* dtrace_linux.c: dtrace_printf/printk: Avoid calling vprintk,
since we can get a recursion deadlock if we try and probe
fbt::form*:. Now we are detached from the kernel.
597* dtrace_linux.c: dtrace_printf: Avoid deadlock if we interrupt
our own cpu doing a printf.
Sun Nov 27 17:36:18 2011 fox
596* dtrace.c, dtrace_linux.c: Add simple lock around dtrace_printf,
so we dont get interleaved output. Add "stack" command to
/proc/dtrace/trace. Modify the fast-teardown to try and stop at
a red light, the other cpus. We use the original mechanism but
we try to prevent the flood of probes during teardown.
Appox 20m probes could happen when fbt::: with 50,000+ probes
are enabled. This reduces it to may 1m. See /proc/dtrace/trace
for the results.
Sat Nov 26 21:40:32 2011 fox
595* dtrace_linux.c: Add timestamp and cpu# to all /proc/dtrace/trace
entries.
Fri Nov 25 17:26:03 2011 fox
594* driver/dtrace.c: Rework the fast-teardown code since it didnt
work reliably. This is potentially much better. We save
up the kmem_free's of the ECBs til the end and free them up
at the end.
593* cpu_x86.c: Add missing emulation for POPF (0x9d) instruction.
Fedora core does that in "not_same" label in this_cpu_cmpxchg16b_emu
subroutine.
Thu Nov 24 23:48:02 2011 fox
592* cpu_x86.c: Remove curious code handler for iret.
591* dtrace_linux.c: Map printk to dtrace_printf.
590* vminfo.c: Got if..endif conditional wrong.
Wed Nov 23 21:04:52 2011 fox
589* syscalls.c: Avoid hanging on sys64.
588* systrace.c: Add "*" to show probed syscalls.
587* vminfo.c: Avoid compile issue on older kernels.
Tue Nov 22 22:30:00 2011 fox
586* driver/cpu_x86.c: When handling PUSHF instruction, dont leave
interrupts disabled. Cause random crashes/kernel assertion issues.
Mon Nov 21 22:25:54 2011 fox
585* driver/*: Remove some debug left behind. Some portability fixes.
584* tests/syscalls.c: Add more syscalls. Fix potential hang on
sigsuspend.
Sun Nov 20 10:46:20 2011 fox
583* systrace.c: Add syscall counting stats to /proc/dtrace/stats.
582* systrace.c: Add /proc/dtrace/syscall so we can see how many hits
and do coverage analysis.
Fri Nov 18 20:21:52 2011 fox
581* intr_x86-64.S: Disable NMIs whilst we are loaded to avoid calamity.
580* x_call.c: Fix NMI (dont invoke it).
579* x_call.c: Fix #elif.
Thu Nov 17 22:09:35 2011 fox
578* dt_module.c: Fix unsigned isue leading to core dump.
577* dtrace_linux.c, mutex.c: Add better diagnostics/error detection
to mutex. Fix issue in dmutex_init which could lead to memory
corruption/kernel core dump.
Tue Nov 15 22:53:23 2011 fox
576* driver/dtrace_linux.c: dtrace_printf() Add support for %ll
specifier. Avoid core dump on printing null string.
Add magic number checking to vmem allocate/free functions.
Sun Nov 13 11:45:49 2011 fox
575* Archive: 1.0128
574* systrace.c: Fix for rt_sigsuspend in 2.6.26 and above kernels.
Was causing build/sys64 to core dump or panic the kernel.
Fri Nov 11 23:03:36 2011 fox
573* tests/instr.c: Instruction dumper, for diagnosing instruction
single stepping issues. We dont build it, but theres a comment
to show how to build it.
Thu Nov 10 23:12:04 2011 fox
572* fbt_linux.c: /proc/dtrace/fbt now include the probe hit count
and an instruction dumper so we can verify if we are handling
all the fbt probes properly when single stepping.
Wed Nov 9 20:37:30 2011 fox
571* dtrace_linux.c: Remove redundant mtx counters, add extra int3
counters. Remove dtrace_printf() mutex since that cannot work.
570* tests/syscalls.c: Remove non-determinism and random segfaults.
Tue Nov 8 21:53:44 2011 fox
569* vminfo.c: Fix config issue for fc15/2.6.38 kernel.
Mon Nov 7 23:00:12 2011 fox
568* mutex.c, linux_types.h, cyclic_linux.c: Revert cyclic_linux.c
to using a spinlock - not a mutex or semaphore, since we
run from IRQ context/tasklet context.
Revert mutex.c to use pure semaphores, not hand crafted
mutexes. If the kernel is doing lock checking, it will
tell us if we might block in an interrupt routine, which is
bad. (So, why did I do mutex.c at all? Probably got confused
by some other issues).
linux_types.h: Wrap the semaphores with the dmutex call
wrappers. Dont really need this.
Anyway, I still kept some of the lock-tightening code which
was possibly upsetting the kernels.
Sun Nov 6 00:41:47 2011 fox
567* tools/tty.pl: Commarise numbers when dumping stats. Dont
keep printing the prompt message.
566* mutex.c: Calling the wrong panic routine!
565* dtrace_linux.h: Dont map dtrace_panic to panic.
564* driver/vminfo.c: Compile warnings cleanup; avoid table overflow.
563* driver/prov_common.c: Avoid table overflow.
562* driver/dtrace_isa.c: Fix stack() which paniced us because of
changes in Linux 2.6.39 and above.
561* Archive: 1.0127
560* driver/dtrace_linux.c: Turn off interrupt level dtrace_printf()
calls. Might be affecting Liux 3.0 kernel (probably not). But
removes noise from /proc/dtrace/trace.
Add mutex protection to the par_alloc family of functions.
Add some extra stats to /proc/dtrace/stats.
Dont update a PTE entry if what we are doing is the same as it is
(performance optimisation). Add multipage support.
559* driver/dtrace_linux.h: Add libc_ prototypes.
558* driver/dtrace_subr.c: Hide dtrace_sync_func since we need the
real one to be global for xcall.c to see it.
557* driver/fbt_linux.c: Put some protection in, in case the par_alloc
fails to allocate (normally, because I was testing/disabling par_alloc).
556* driver/*: Replace mutex calls with dmutex calls (to avoid
name clash).
555* driver/cyclic_linux.c: Replace kernel spinlocks with our
mutex calls.
554* driver/ctf_struct.c: Add cpumask typedef. Trying to fix the
ctfconvert issue, but this change doesnt fix it. Need to
dive into the dwarf code to see what gcc on Ubuntu 11.10
is tickling the "cant resolve type" bug.
553* driver/libc.c: Some simple string functions. I really want
"nm -u build/driver/dtracedrv.ko" to be clean. It isnt, but
some of these functions are only called during load time.
We'll defer proper libc cleanup til a later date.
552* driver/mutex.c: Our simple spinlock mutexes.
551* linux_types.h: Use our own mutex/dmutex implementation to
avoid problems with Linux mutexes trying to preempt us.
550* cmd/ctfconvert/dwarf.c: Avoid bailing out when hitting a DWARF
issue. This may be caused by newer gcc's emitting something
we dont understand. For now, just work around it.
(cpumask is causing the problem).
Sat Nov 5 16:46:29 2011 fox
549* bug.sh: Dont keep telling people to contact me - just on the
first failed build.
Sun Oct 30 12:25:08 2011 fox
548* dtrace_linux.c: Add a panic notifier (dont need it, just for
debugging).
547* prov_common.c: Dont let us reparse the common provider table
multiple times.
546* tools/tty.pl: New load causing tool.
Wed Oct 26 22:19:06 2011 fox
545* vminfo.c: Make it work (or at least compile) for <2.6.39 kernels.
544* prov_common.c: Changes so that we can add support for instruction
level providers (ie. vminfo). Change the map[] table to
allow room for expansion (ideally a linked list), and provide
support for instruction level kernel disassembly callbacks.
543* vminfo.c: New file. vminfo provider. Similar to Solaris, but
annotating all the /proc/vmstats counters.
542* dtrace_linux.c: Move some of the init calls to after the end of
syms_write, so we can share the prcom code with the vminfo code.
541* dtrace_linux.c: Fix PAGE_NX issue for cpu_core_exec[] structure
on 3.x kernels.
Tue Oct 11 23:49:58 2011 fox
540* cmd/ctfconvert/makefile: Fix bad linking for unused ctfdump
command.
Mon Oct 10 21:50:42 2011 fox
539* Fix last change to dtrace_isa.c to get the if/else/endif the
right way around. Thanks Nigel.
538* dtrace_isa.c: Fix for kernels >= 2.6.39, since the stacktrace_ops
have lost the .warning/.warning_symbol members.
Fri Oct 7 19:53:05 2011 fox
537* mkport.pl, ctfconvert/dwarf.c: Handle missing cplus_demangle()
function. Reported on SLE11.
Mon Jul 18 23:15:08 2011 fox
536* driver/systrace.c: Fix for execv on 2.6.38 kernels.
Wed Jul 13 21:30:01 2011 fox
535* dt_lex.l: Handle // comments at outer scope.
534* tests/tests.d: Better use of timestamps to exit test after 5s
to avoid problems with dropped probes.
Tue Jul 12 07:07:55 2011 fox
533* driver/prov_common.c: Avoid null ptr deref for some probes.
Fri Jul 8 09:19:49 2011 fox
532* prov_common.c: Provide common framework, similar to notifier.c
but more generic for more Solaris defined probes.
Sat Jun 25 23:44:06 2011 fox
531* notifier.c: New provider to intercept the notifier chains.
Fri Jun 24 20:12:27 2011 fox
530* tools/load.pl: Use uname -r to find the right build dir when
we have multiplate build/ directories in the same build area.
529* x_call.c: Fix the targetted cpu scenario.
Thu Jun 23 20:37:10 2011 fox
528* driver/systrace.c: Fix for i386 sigreturn() syscall.
Wed Jun 22 21:18:17 2011 fox
527* tests/syscalls.c: i386 now invokes sigreturn() syscall - which is
panicing the 64b kernel...off to fix that.
Tue Jun 21 22:44:58 2011 fox
526* tools/mksyscalls.pl: Better unistd.h detection and tbl file generation.
Mon Jun 20 20:17:31 2011 fox
525* tools/mksyscalls.pl: Updates for 2.6.18 kernel.
524* dtrace_linux.c, x_call.c: Fixes for 2.6.18 kernel and >8 cpus.
523* driver/intr_x86*.S: Add cnt_nmi1/cnt_nmi2 so we can see if we are
called.
522* doc/security.txt: Update the security instructions.
Sun Jun 19 00:13:41 2011 fox
521* dtrace_linux.c, x_call.c, intr_x86*.S: Add support for NMI interrupts
when IPI is not responding.
520* Archive: 1.0126