Add Joplin, old Mac, and Fedora WiFi runbooks; simplify JA3 Whisky scripts and hotspot recovery.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
215
docs/mac/DISPLAY_FREEZE_RUNBOOK.md
Normal file
215
docs/mac/DISPLAY_FREEZE_RUNBOOK.md
Normal file
@@ -0,0 +1,215 @@
|
||||
# MacBook Pro M1 — зависания после замены матрицы
|
||||
|
||||
**Контекст:** заменена матрица (Built-in Liquid Retina XDR). После ремонта — повторяющиеся полные зависания системы.
|
||||
**Инцидент:** 2026-06-16, ~4 зависания за час (21:31–21:43).
|
||||
**Проверено:** 2026-06-16, логи `/Library/Logs/DiagnosticReports/`, `log show`, `last reboot`.
|
||||
|
||||
См. также: [README.md](./README.md)
|
||||
|
||||
---
|
||||
|
||||
## 1. Симптом
|
||||
|
||||
| Что видит пользователь | Что в логах |
|
||||
|------------------------|-------------|
|
||||
| Экран и ввод «замирают», курсор не двигается | Нет записей в unified log на время freeze (дыра в логах) |
|
||||
| Помогает только **удержание кнопки питания** | `btn_rst` / `finger_reset` в `forceReset-full-*.diag` |
|
||||
| Зависания повторяются **сразу после перезагрузки** (через 2–9 мин) | Аптайм в отчётах: 155 с, 537 с |
|
||||
| Не kernel panic с диалогом «перезагрузить» | Нет свежих `panic-full-*.panic` за 16.06; только `forceReset` |
|
||||
|
||||
Это **hard lockup** (полная неотзывчивость SoC), а не обычный краш приложения.
|
||||
|
||||
---
|
||||
|
||||
## 2. Хронология 2026-06-16
|
||||
|
||||
| Время | Событие | Аптайм до freeze |
|
||||
|-------|---------|------------------|
|
||||
| ~19:19 | Загрузка (сессия до первого сбоя) | — |
|
||||
| 21:24–21:26 | Telegram: отчёт `cpu_resource` (~55% CPU за 3 мин) | ~2 ч |
|
||||
| **21:31** | `forceReset-full-2026-06-16-213115` · `btn_rst` | **~7921 с (~2 ч 12 мин)** |
|
||||
| **21:34** | `forceReset-full-2026-06-16-213425` · `btn_rst` | **~155 с (~2.5 мин)** |
|
||||
| 21:34–21:37 | `deleted` (CacheDelete): `cpu_resource` (~52% CPU) | после 2-го reboot |
|
||||
| **21:43** | `forceReset-full-2026-06-16-214334` · `btn_rst` | **~537 с (~9 мин)** |
|
||||
|
||||
`last reboot`:
|
||||
|
||||
```
|
||||
reboot Tue Jun 16 21:43
|
||||
reboot Tue Jun 16 21:34
|
||||
reboot Tue Jun 16 21:31
|
||||
```
|
||||
|
||||
В логах — **пропуск ~18 мин** (21:33 → 21:51): пока система зависла, запись остановилась.
|
||||
|
||||
---
|
||||
|
||||
## 3. RCA — что зафиксировано в отчётах
|
||||
|
||||
### 3.1 Тип сбоя: принудительный reset
|
||||
|
||||
Все три отчёта за 16.06:
|
||||
|
||||
```
|
||||
panic(cpu N caller ...): btn_rst
|
||||
Debugger message: panic
|
||||
Boot faults: btn_rst, finger_reset, force_off (в ResetCounter)
|
||||
```
|
||||
|
||||
`btn_rst` = ядро зафиксировало сброс **кнопкой питания**, когда система уже не отвечала. Это не программный panic с stack trace приложения.
|
||||
|
||||
Файлы:
|
||||
|
||||
- `/Library/Logs/DiagnosticReports/forceReset-full-2026-06-16-213115.0002.diag`
|
||||
- `/Library/Logs/DiagnosticReports/forceReset-full-2026-06-16-213425.0002.diag`
|
||||
- `/Library/Logs/DiagnosticReports/forceReset-full-2026-06-16-214334.0002.diag`
|
||||
- `/Library/Logs/DiagnosticReports/ResetCounter-2026-06-16-213129.diag` (и 213438, 214346)
|
||||
|
||||
### 3.2 Главный подозреваемый: WindowServer (графический стек)
|
||||
|
||||
Снимок процессов **на момент зависания** (поле `systemTimeTask`):
|
||||
|
||||
| Freeze | Аптайм | WindowServer CPU time | Паттерн потоков |
|
||||
|--------|--------|----------------------|-----------------|
|
||||
| 21:31 | ~2 ч 12 мин | **714 с** | потоки ждут `semaphore port ... owned by pid` **самого WindowServer** |
|
||||
| 21:34 | ~2.5 мин | **15 с** | то же — deadlock на semaphore |
|
||||
| 21:43 | ~9 мин | **49 с** | то же — deadlock на semaphore |
|
||||
|
||||
WindowServer — процесс отрисовки всего UI (SkyLight). Потоки, ждущие semaphore у того же PID, — типичный **deadlock в графическом конвейере**.
|
||||
|
||||
Рядом в снимках присутствуют процессы дисплейного стека:
|
||||
|
||||
- `corebrightnessd` — яркость / подсветка
|
||||
- `IOMFB_bics_daemon` — framebuffer (IOMFB)
|
||||
- `backboardd` — события ввода / дисплей
|
||||
|
||||
### 3.3 Что **не** найдено в открытых логах
|
||||
|
||||
Поиск за 3 ч по `DCP`, `IOMFB`, `CLCD`, `backlight`, `GPU reset`, `panel`, `LCD`:
|
||||
|
||||
- **Нет** явных ошибок драйвера дисплея или DCP
|
||||
- Только штатные записи (`mobileassetd`, `backlightservices`, уведомления)
|
||||
|
||||
Apple часто **не пишет** аппаратные ошибки шлейфа/матрицы в открытый unified log. Отсутствие строк не опровергает аппаратную причину.
|
||||
|
||||
### 3.4 Дополнительная нагрузка (усиливающие факторы)
|
||||
|
||||
| Процесс | Когда | Наблюдение |
|
||||
|---------|-------|------------|
|
||||
| **Telegram** | 21:24–21:26 | `cpu_resource`: ~55% CPU за 162 с |
|
||||
| **deleted** (CacheDelete) | 21:34–21:37 | `cpu_resource`: ~52% CPU, 88 с после boot |
|
||||
| **mds** / Spotlight | после каждого reboot | активная индексация (`mdworker_shared`) |
|
||||
| **Память** | на момент проверки | 16 GB почти заняты, ~7.8 GB в compressor, свободно ~140 MB |
|
||||
|
||||
Высокая нагрузка и давление на память **усиливают** нестабильность, но паттерн WindowServer-deadlock + быстрые повторы после reboot указывают на проблему **графики/дисплея**, а не только на фоновые процессы.
|
||||
|
||||
### 3.5 История до 16.06 (система нестабильна несколько дней)
|
||||
|
||||
| Период | Тип отчётов | Характер |
|
||||
|--------|-------------|----------|
|
||||
| 10–11.06 | `shutdown_stall` | зависание при выключении |
|
||||
| 12–14.06 | `panic-full` + `shutdown_stall` | `Wake transition timed out after 35 seconds` · suspected: `com.apple.driver.AppleSEPManager` |
|
||||
| 15.06 | `forceReset` (21:42) + `shutdown_stall` | тот же `btn_rst` |
|
||||
| 16.06 | 3× `forceReset` за час | WindowServer deadlock |
|
||||
|
||||
До замены матрицы уже были сбои power management (SEP / wake). После ремонта доминирует другой профиль: **GUI freeze через WindowServer**, в том числе через несколько минут после загрузки.
|
||||
|
||||
---
|
||||
|
||||
## 4. Связь с заменой матрицы
|
||||
|
||||
Прямых строк «ошибка шлейфа» в логах нет. Косвенные признаки, согласующиеся с ремонтом дисплея:
|
||||
|
||||
1. **WindowServer стабильно уходит в deadlock** на всех трёх снимках
|
||||
2. В стеке рядом — `corebrightnessd`, `IOMFB_bics_daemon`
|
||||
3. Зависания **сразу после reboot** (2.5 и 9 мин) — типично для драйвера/железа дисплея, а не для «прогрева» одного приложения
|
||||
4. Полный lockup (`btn_rst`) без kernel panic — возможен при зависании GPU/DCP-конвейера
|
||||
|
||||
**Вероятные аппаратные причины (для сервиса):**
|
||||
|
||||
- плохой контакт **шлейфа матрицы** (eDP/LVDS)
|
||||
- повреждение или неправильная укладка **кабеля дисплея**
|
||||
- несовместимая или дефектная **матрица** для `MacBookPro18,1` (Liquid Retina XDR)
|
||||
- ошибка сборки: винты, заземление, T-Con / подсветка
|
||||
|
||||
---
|
||||
|
||||
## 5. Действия
|
||||
|
||||
### 5.1 Сервис (приоритет)
|
||||
|
||||
Вернуть в сервис с этим runbook. Попросить проверить:
|
||||
|
||||
1. Посадку шлейфа матрицы и display cable на обоих концах
|
||||
2. Отсутствие перекоса / залома шлейфа при закрытии крышки
|
||||
3. Совместимость матрицы с **MacBookPro18,1** (Liquid Retina XDR, не «похожая» панель)
|
||||
4. Корректность сборки подсветки и T-Con
|
||||
|
||||
### 5.2 Диагностика на Mac
|
||||
|
||||
**Apple Diagnostics** (нативная):
|
||||
|
||||
1. Выключить Mac
|
||||
2. Зажать питание → «Параметры» → «Диагностика»
|
||||
|
||||
**Safe Mode** (отсечь сторонние драйверы/агенты):
|
||||
|
||||
1. Выключить → зажать питание → «Продолжить с безопасным режимом»
|
||||
2. Если в Safe Mode стабильно час+ — сильнее аргумент в пользу софта/агентов; если снова freeze — железо/драйвер дисплея
|
||||
|
||||
**Минимальная нагрузка после reboot:**
|
||||
|
||||
- не открывать Cursor, Brave, Telegram сразу после загрузки
|
||||
- проверить, воспроизводится ли freeze на пустом рабочем столе
|
||||
|
||||
### 5.3 Мониторинг
|
||||
|
||||
```bash
|
||||
# последние force reset
|
||||
ls -lt /Library/Logs/DiagnosticReports/forceReset-full-* | head -5
|
||||
|
||||
# причина в заголовке отчёта
|
||||
head -12 /Library/Logs/DiagnosticReports/forceReset-full-*.0002.diag | \
|
||||
grep -o 'panic(cpu[^\\]*'
|
||||
|
||||
# ошибки WindowServer
|
||||
log stream --predicate 'process == "WindowServer"' --level error
|
||||
|
||||
# перезагрузки
|
||||
last reboot | head -10
|
||||
```
|
||||
|
||||
После следующего зависания **не перезагружать сразу** (если возможно подождать 1–2 мин) — иногда успевает дописаться больше в `/Library/Logs/DiagnosticReports/`. На практике при hard lockup это редко помогает; основные данные уже в `forceReset-full`.
|
||||
|
||||
---
|
||||
|
||||
## 6. Краткий вывод
|
||||
|
||||
| Вопрос | Ответ |
|
||||
|--------|-------|
|
||||
| Это kernel panic? | Нет (16.06). Это **hard lockup** → сброс кнопкой (`btn_rst`) |
|
||||
| Сколько зафиксировано 16.06? | **3** отчёта `forceReset`; пользователь сообщал о ~4 зависаниях |
|
||||
| Что зависало? | **WindowServer** — deadlock, графический стек |
|
||||
| Есть ли ошибки DCP/шлейфа в логах? | **Нет** в открытом unified log |
|
||||
| Главная рекомендация | **Перепроверка шлейфа и сборки дисплея в сервисе** |
|
||||
| Была ли нестабильность раньше? | Да, с 10–11.06 (`shutdown_stall`, SEP wake timeout) |
|
||||
|
||||
---
|
||||
|
||||
## 7. Ссылки на файлы отчётов
|
||||
|
||||
```
|
||||
/Library/Logs/DiagnosticReports/forceReset-full-2026-06-16-213115.0002.diag
|
||||
/Library/Logs/DiagnosticReports/forceReset-full-2026-06-16-213425.0002.diag
|
||||
/Library/Logs/DiagnosticReports/forceReset-full-2026-06-16-214334.0002.diag
|
||||
/Library/Logs/DiagnosticReports/ResetCounter-2026-06-16-213129.diag
|
||||
/Library/Logs/DiagnosticReports/ResetCounter-2026-06-16-213438.diag
|
||||
/Library/Logs/DiagnosticReports/ResetCounter-2026-06-16-214346.diag
|
||||
/Library/Logs/DiagnosticReports/Telegram_2026-06-16-212645_Eternals.cpu_resource.diag
|
||||
/Library/Logs/DiagnosticReports/deleted_2026-06-16-213726_Eternals.cpu_resource.diag
|
||||
|
||||
# более ранние (контекст)
|
||||
/Library/Logs/DiagnosticReports/panic-full-2026-06-14-115455.0002.panic # Wake transition / SEP
|
||||
/Library/Logs/DiagnosticReports/panic-full-2026-06-13-155145.0002.panic
|
||||
/Library/Logs/DiagnosticReports/forceReset-full-2026-06-15-194242.0002.diag
|
||||
```
|
||||
42
docs/mac/README.md
Normal file
42
docs/mac/README.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# Mac — основной MacBook (Apple Silicon)
|
||||
|
||||
Контур для **MacBook Pro M1 Pro** (`MacBookPro18,1`): диагностика, нестабильность, дисплей.
|
||||
|
||||
**Проверено:** 2026-06-16
|
||||
|
||||
---
|
||||
|
||||
## Документы
|
||||
|
||||
| Документ | Назначение |
|
||||
|----------|------------|
|
||||
| **[DISPLAY_FREEZE_RUNBOOK.md](./DISPLAY_FREEZE_RUNBOOK.md)** | Зависания после замены матрицы: RCA по логам, хронология, действия |
|
||||
|
||||
---
|
||||
|
||||
## Железо (справка)
|
||||
|
||||
| Параметр | Значение |
|
||||
|----------|----------|
|
||||
| Модель | MacBook Pro 14" (`MacBookPro18,1`) |
|
||||
| Чип | Apple M1 Pro, 10 ядер, 16 GB RAM |
|
||||
| Дисплей | Built-in Liquid Retina XDR, 3456×2234 |
|
||||
| ОС | macOS 15.3.1 (24D70) |
|
||||
| Серийник | X47KCRG26W |
|
||||
|
||||
---
|
||||
|
||||
## Быстрая диагностика зависания
|
||||
|
||||
```bash
|
||||
# последние принудительные перезагрузки (кнопка питания)
|
||||
ls -lt /Library/Logs/DiagnosticReports/forceReset-full-* | head -5
|
||||
|
||||
# история перезагрузок
|
||||
last reboot | head -10
|
||||
|
||||
# ошибки WindowServer в реальном времени
|
||||
log stream --predicate 'process == "WindowServer"' --level error
|
||||
```
|
||||
|
||||
Подробно: [DISPLAY_FREEZE_RUNBOOK.md](./DISPLAY_FREEZE_RUNBOOK.md)
|
||||
Reference in New Issue
Block a user