Commit b5020e7
committed
Support multi-process debugging: sync breakpoints and coordinate instances
Two fixes for debugging multi-process Ruby applications:
1. Breakpoint synchronization across forked processes (fixes #714):
Store serialized breakpoint specs in a shared JSON tempfile alongside
the existing flock tempfile. Publish on subsession leave, check on
subsession enter, and in the socket reader retry paths for both DAP
and console protocols. Breakpoints define to_sync_data for
serialization. Only LineBreakpoint and CatchBreakpoint are synced.
2. Coordination of independent debugger instances:
When parallel test runners fork workers before the debugger loads,
each worker gets its own SESSION with no coordination. Add a
well-known lock file keyed by process group ID
(/tmp/ruby-debug-{uid}-pgrp-{getpgrp}.lock) that all sibling
instances discover automatically. On enter_subsession, acquire
the lock (blocking flock) so only one process enters the debugger
at a time. While blocked, no prompt is shown and IRB/Reline never
reads STDIN.1 parent bad4d38 commit b5020e7
4 files changed
+148
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
22 | 28 | | |
23 | 29 | | |
24 | 30 | | |
| |||
221 | 227 | | |
222 | 228 | | |
223 | 229 | | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
224 | 236 | | |
225 | 237 | | |
226 | 238 | | |
| |||
302 | 314 | | |
303 | 315 | | |
304 | 316 | | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
305 | 321 | | |
306 | 322 | | |
307 | 323 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
186 | 186 | | |
187 | 187 | | |
188 | 188 | | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
189 | 192 | | |
190 | 193 | | |
191 | 194 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
271 | 271 | | |
272 | 272 | | |
273 | 273 | | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
274 | 278 | | |
275 | 279 | | |
276 | 280 | | |
| |||
356 | 360 | | |
357 | 361 | | |
358 | 362 | | |
| 363 | + | |
359 | 364 | | |
360 | 365 | | |
361 | 366 | | |
| |||
391 | 396 | | |
392 | 397 | | |
393 | 398 | | |
| 399 | + | |
394 | 400 | | |
395 | 401 | | |
396 | 402 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
| 45 | + | |
45 | 46 | | |
46 | 47 | | |
47 | 48 | | |
| |||
90 | 91 | | |
91 | 92 | | |
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 | + | |
93 | 160 | | |
94 | 161 | | |
95 | 162 | | |
96 | 163 | | |
| 164 | + | |
97 | 165 | | |
98 | 166 | | |
99 | 167 | | |
| |||
1711 | 1779 | | |
1712 | 1780 | | |
1713 | 1781 | | |
| 1782 | + | |
1714 | 1783 | | |
1715 | 1784 | | |
| 1785 | + | |
1716 | 1786 | | |
1717 | 1787 | | |
1718 | 1788 | | |
| |||
1724 | 1794 | | |
1725 | 1795 | | |
1726 | 1796 | | |
| 1797 | + | |
1727 | 1798 | | |
| 1799 | + | |
1728 | 1800 | | |
1729 | 1801 | | |
1730 | 1802 | | |
| |||
2028 | 2100 | | |
2029 | 2101 | | |
2030 | 2102 | | |
| 2103 | + | |
2031 | 2104 | | |
2032 | 2105 | | |
2033 | 2106 | | |
| |||
2057 | 2130 | | |
2058 | 2131 | | |
2059 | 2132 | | |
| 2133 | + | |
| 2134 | + | |
| 2135 | + | |
| 2136 | + | |
| 2137 | + | |
| 2138 | + | |
| 2139 | + | |
| 2140 | + | |
| 2141 | + | |
| 2142 | + | |
| 2143 | + | |
| 2144 | + | |
| 2145 | + | |
| 2146 | + | |
| 2147 | + | |
| 2148 | + | |
| 2149 | + | |
| 2150 | + | |
| 2151 | + | |
| 2152 | + | |
| 2153 | + | |
| 2154 | + | |
| 2155 | + | |
| 2156 | + | |
| 2157 | + | |
2060 | 2158 | | |
2061 | 2159 | | |
| 2160 | + | |
2062 | 2161 | | |
2063 | 2162 | | |
| 2163 | + | |
| 2164 | + | |
2064 | 2165 | | |
2065 | 2166 | | |
2066 | 2167 | | |
| |||
2076 | 2177 | | |
2077 | 2178 | | |
2078 | 2179 | | |
| 2180 | + | |
2079 | 2181 | | |
2080 | 2182 | | |
2081 | 2183 | | |
| |||
2146 | 2248 | | |
2147 | 2249 | | |
2148 | 2250 | | |
| 2251 | + | |
| 2252 | + | |
| 2253 | + | |
| 2254 | + | |
| 2255 | + | |
| 2256 | + | |
| 2257 | + | |
| 2258 | + | |
| 2259 | + | |
| 2260 | + | |
| 2261 | + | |
| 2262 | + | |
| 2263 | + | |
| 2264 | + | |
| 2265 | + | |
| 2266 | + | |
| 2267 | + | |
| 2268 | + | |
| 2269 | + | |
2149 | 2270 | | |
2150 | 2271 | | |
2151 | 2272 | | |
| |||
2547 | 2668 | | |
2548 | 2669 | | |
2549 | 2670 | | |
| 2671 | + | |
2550 | 2672 | | |
2551 | 2673 | | |
2552 | 2674 | | |
| |||
0 commit comments