My English Study매일 만나는 비즈니스 영어
← 시스템 이슈 분석 학습 목록

SYSTEM SW / 2026-08-15 / System issue triage

Tracking Down a Hard Lockup during Fold and Unfold Transitions

폴딩·언폴딩 전환 중 발생하는 hard lockup 추적

9월 출시 예정인 Orion Fold에서 화면을 접고 펼 때 드물게 단말이 멈추고 워치독 bite로 재부팅되는 문제가 폴딩 로봇 테스트에서 발견되었습니다. SQE, 사내 디스플레이 소프트웨어 팀, 칩셋 벤더 Qorvix 디스플레이 팀, 패널 벤더 Lumina가 정보가 거의 없는 bite를 분석하는 방법과 가설, 실험 계획을 논의합니다.

가상의 비즈니스 회의 · 중급~고급 · 2,221단어 · 약 19분

Hyemi Song · SQEWoojin Choi · Display SoftwareJisu Han · Display SoftwareLena Hoffmann · Qorvix Display EngineeringTakeshi Mori · Lumina Panel Engineering

01 / English script

Attendance

01 · Hyemi SongSQE

Good morning, everyone, and thanks for joining on a Saturday. I know it's a public holiday here in Korea, so I appreciate it even more. I'm Hyemi, the SQE lead for Orion Fold. We have a hard lockup during fold transitions that I don't want anywhere near the factory build, which is due on August 28th. Let's do quick introductions.

02 · Woojin ChoiDisplay Software

Woojin Choi, Display Software lead. My team owns the display driver and the logic that switches between the cover screen and the main screen.

03 · Jisu HanDisplay Software

Jisu Han, also Display Software. I wrote most of the power management code for the two display pipelines, so if this is a power sequencing issue, it's probably my code.

04 · Lena HoffmannQorvix Display Engineering

Lena Hoffmann from Qorvix display engineering, joining from Munich. I support the display controller and the interconnect on your chipset.

05 · Takeshi MoriLumina Panel Engineering

Takeshi Mori from Lumina, in Tokyo. We supply both panels on Orion Fold, and I'm responsible for the panel driver IC timing.

Symptom and Test Setup

06 · Hyemi SongSQE

Here's what we know. We have six folding robots that open and close devices continuously, about four times a minute, while running a mix of apps. Over the last week, we ran just over forty thousand fold cycles. We had a hundred and twenty-two freezes, so about 0.3 percent per fold. The screen freezes in the middle of the transition, and about ten seconds later the device reboots.

07 · Woojin ChoiDisplay Software

Point three percent per fold sounds small, but a typical user folds the device around eighty times a day. That would mean a freeze roughly every four days for every user. That's clearly a launch blocker.

08 · Hyemi SongSQE

Exactly. And the hardest part is the reset reason. In every single case, it's a watchdog bite, not a bark. So we have no ramdump. All we have is the last kernel log that survives in the preserved memory region.

09 · Jisu HanDisplay Software

As Yuna explained at the tech share last week, a bite usually means the CPU couldn't even handle the bark interrupt. In display code, the most common cause I know of is a CPU getting stuck on a register access, not in a software loop.

10 · Hyemi SongSQE

Can you explain that for those of us who aren't hardware people? How can reading a register make a CPU hang?

11 · Lena HoffmannQorvix Display Engineering

I can take that one. When the CPU reads a register in the display controller, the request travels across the chip's interconnect to that block. If the block's clock is turned off or its power domain is collapsed, nobody answers the request. On some chips, the CPU then waits forever for a response that never comes. It's stuck at the hardware level, so it can't take interrupts, and the watchdog eventually bites.

Reading the Last Kernel Log

12 · Hyemi SongSQE

Woojin, what do the last kernel logs show?

13 · Woojin ChoiDisplay Software

We have usable logs from ninety-eight of the hundred and twenty-two freezes. In every one, the last messages are from the display switching sequence. The pattern is consistent: the main display pipeline starts powering up, the cover display pipeline starts powering down, and then the log simply stops. The last line is usually our debug message saying the cover pipeline's power domain is being turned off.

14 · Jisu HanDisplay Software

That fits the theory perfectly. If something tries to read a cover pipeline register right after its power domain goes off, the CPU would hang exactly at that point. The question is what would touch the cover pipeline after we've decided to turn it off.

15 · Takeshi MoriLumina Panel Engineering

Could it be related to the panel's tearing effect signal? Our panels send a signal at the start of each frame, and your driver uses it to time the next update. If the cover panel sends one last signal while it's shutting down, the interrupt handler might try to read the controller's status.

16 · Woojin ChoiDisplay Software

That's a very good thought. The interrupt handler does read a status register to check which frame completed. And it runs on whichever CPU receives the interrupt, independently of the switching sequence. So there's a window where the handler could fire after the power-off has started.

17 · Jisu HanDisplay Software

But we disable that interrupt before powering down. That's the first thing the power-off sequence does. I checked that code carefully when I wrote it.

18 · Lena HoffmannQorvix Display Engineering

Disabling the interrupt stops new interrupts from being delivered, but it doesn't wait for a handler that's already running on another CPU. If the tearing signal arrived a few microseconds before you disabled it, the handler could still be in progress on CPU two while CPU zero turns off the power. You'd need to synchronize, to wait for any in-flight handler to finish, before collapsing the domain.

19 · Jisu HanDisplay Software

That's a classic mistake, and I think you're right. Let me check whether we call the synchronization function after disabling the interrupt. If we don't, that's almost certainly our bug.

Getting Better Evidence

20 · Hyemi SongSQE

This is a promising theory, but we're still guessing from the last line of a log. Is there any way to turn this kind of hang into something we can actually see in a dump?

21 · Lena HoffmannQorvix Display Engineering

Yes. Our interconnect has a debug feature called access timeout detection. When it's enabled, if a request to a powered-off block doesn't get a response within a set time, the interconnect returns an error to the CPU instead of letting it wait forever. The kernel then gets a bus error exception, which normally leads to a panic with a full register dump, including the exact address that was being accessed.

22 · Woojin ChoiDisplay Software

That would be perfect. We'd go from guessing to knowing exactly which register and which code path caused it. Why isn't it enabled by default?

23 · Lena HoffmannQorvix Display Engineering

It adds a small amount of latency to every access through the interconnect, and in production, some customers prefer a silent hang and reboot over a panic with a dump. But for debugging, it's invaluable. I'd recommend enabling it on the robot devices right away. I'll send the configuration this afternoon.

24 · Hyemi SongSQE

Great. With six robots and a freeze every three hundred folds or so, we should see several dumps within a day. I'll also keep two robots on the original configuration as a control, so we can confirm the timeout detection doesn't change the failure rate in some unexpected way.

25 · Takeshi MoriLumina Panel Engineering

On our side, I'd like to measure the timing of the tearing signal during shutdown. I suspect our panel may send one more signal than your driver expects, about sixteen milliseconds after the display-off command. If that's true, it widens the window for the race.

26 · Jisu HanDisplay Software

That's useful, but I'd be careful not to treat that as the root cause. Even if the panel sends an extra signal, our driver should handle it safely. The fix has to be on our side regardless.

27 · Takeshi MoriLumina Panel Engineering

I agree completely. I'm just trying to explain why it happens so often, so you can test the fix under realistic timing.

Fix Options

28 · Hyemi SongSQE

Let's assume for a moment that the theory is confirmed by tomorrow. What does the fix look like, and how risky is it?

29 · Jisu HanDisplay Software

There are two layers again. First, after disabling the interrupt, we call the synchronization function so any in-flight handler finishes before we power down. That closes the race. Second, as defense in depth, the interrupt handler should check a flag that says the pipeline is powering down, and return immediately without touching any registers.

30 · Woojin ChoiDisplay Software

Both changes are small. Maybe thirty lines total. The risk is in timing: the synchronization call can wait a few hundred microseconds if a handler is running, which slightly extends the fold transition. I don't expect anyone to notice, but we should measure it.

31 · Lena HoffmannQorvix Display Engineering

I'd add a third check. Before any register access in the display driver, verify that the power domain is actually on, at least in debug builds. Our reference driver has a helper for this. It won't run in production, but it will catch similar mistakes in other code paths during development.

32 · Hyemi SongSQE

I like that a lot. It turns a silent hardware hang into a loud software warning, which is exactly what we want during development.

Validation Plan and Schedule

33 · Hyemi SongSQE

Now the schedule. The factory build cutoff is August 28th. That's thirteen days from today. Walk me through how we get there.

34 · Woojin ChoiDisplay Software

Today and tomorrow: robots run with access timeout detection to confirm the theory. Monday: Jisu has the fix ready for review. Tuesday: a test build goes on all six robots. If we see zero freezes over forty thousand folds, which takes about a week, we'd have confidence by around August 25th. That leaves three days of margin.

35 · Hyemi SongSQE

Forty thousand folds with zero failures, when the failure rate was one in three hundred, gives us strong statistical confidence. But I'd like to add more robots if possible. Can we borrow the two from the hinge durability lab?

36 · Jisu HanDisplay Software

I'll ask them. They're running a mechanical test that doesn't need the latest software, so they may be able to switch two units over.

37 · Takeshi MoriLumina Panel Engineering

I'll have the tearing signal measurements by Tuesday, so you can configure one of the robots to fold at the most dangerous timing if needed.

Fallback Options and Launch Communication

38 · Hyemi SongSQE

I also need a fallback before I talk to the launch team on Monday. If the theory turns out to be wrong, or the fix doesn't hold up on the robots, what's our plan B? I don't want to walk into that meeting with only one option.

39 · Jisu HanDisplay Software

The bluntest option would be to delay powering down the cover pipeline. Instead of turning it off immediately when the main screen comes on, we keep it powered for an extra hundred milliseconds. Any late tearing signal or in-flight handler would finish while the block is still alive. It costs a little power on each fold, but it would almost certainly hide the problem.

40 · Lena HoffmannQorvix Display Engineering

'Hide' is the right word, though. A delay narrows the window, but it doesn't close it. Under heavy load, a handler could still be delayed by more than a hundred milliseconds, and you'd be back to a hang, just much more rarely, which would make it even harder to debug in the field.

41 · Woojin ChoiDisplay Software

Agreed. I'd only use the delay together with the real fix, never instead of it. But as a fallback for the factory build, if the synchronization fix shows any side effects, a delay is a much better outcome than a freeze every four days.

42 · Hyemi SongSQE

So for the launch team, I'll present it like this: plan A is the synchronization fix plus the handler check, validated on the robots by the twenty-fifth. Plan B adds the power-off delay as an extra margin if plan A shows anything unexpected. In both cases, we meet the August 28th cutoff.

43 · Takeshi MoriLumina Panel Engineering

If it helps, we can also adjust the panel's shutdown sequence in a future panel firmware update, so it stops sending tearing signals immediately after the display-off command. It won't make the factory build, but it would remove one of the triggers for later production batches.

44 · Hyemi SongSQE

That's a good long-term improvement. Let's track it separately so it doesn't distract from the factory build. Takeshi, could you open a ticket on your side and share the number with Woojin, so both teams are following the same item?

Other Possible Instances

45 · Lena HoffmannQorvix Display Engineering

One more suggestion. This pattern, disabling an interrupt without synchronizing before powering down a block, is easy to repeat in other drivers. It might be worth a quick audit of the camera, video, and touch drivers on Orion Fold, since they also power blocks up and down frequently.

46 · Woojin ChoiDisplay Software

Good point. A simple search for places where we disable an interrupt and then turn off a power domain or clock in the same function would find most candidates. I'll ask Junho's camera team and the touch team to look at their drivers this week.

47 · Hyemi SongSQE

And let's enable the access timeout detection on all Orion Fold engineering builds until launch, not just on the robots. If there's another one hiding somewhere, I want a dump, not a bite.

Action Items

48 · Hyemi SongSQE

Let me summarize. Lena: send the access timeout configuration today. Hyemi, that's me: enable it on all robots tonight and share the first dumps tomorrow. Jisu: confirm whether the synchronization call is missing and prepare the fix, plus the power-domain check helper, by Monday. Woojin: coordinate the driver audit with the camera and touch teams, and measure the transition time with the fix. Takeshi: tearing signal timing measurements by Tuesday.

49 · Jisu HanDisplay Software

I'll actually check the code right after this call. If the call is missing, I'll post a message in the channel within the hour, so nobody spends the weekend wondering.

50 · Lena HoffmannQorvix Display Engineering

Sounds good. I'll also include instructions for decoding the bus error information in the dump, since the format isn't obvious.

Closing and Next Meeting

51 · Hyemi SongSQE

Thank you all, especially for giving up part of your holiday. Our next call is Monday, August 17th, at 5 p.m. Korea time, which is 10 a.m. in Munich and 5 p.m. in Tokyo. We'll review the first dumps and Jisu's fix.

52 · Takeshi MoriLumina Panel Engineering

Thank you, Hyemi. See you on Monday. If my measurements are ready earlier, I'll send them to Jisu directly, so the robots can start testing the worst-case timing as soon as possible.

53 · Lena HoffmannQorvix Display Engineering

And if the first dumps show an address outside the display controller, please send them to me right away. It would mean another block is involved, and I'd want to bring in the right colleague from our side before Monday.

54 · Woojin ChoiDisplay Software

Thanks, everyone. Fingers crossed that the first dump points exactly where we think it does. And if it doesn't, at least we'll finally be looking at real evidence instead of the last line of a log.

02 / 한국어 번역

참석자 확인

01 · Hyemi SongSQE

좋은 아침입니다, 여러분. 토요일에 참석해 주셔서 감사합니다. 오늘이 한국 공휴일이라 더 감사하네요. 저는 Orion Fold SQE 리드 혜미입니다. 폴딩 전환 중 hard lockup이 발생하고 있는데, 8월 28일이 마감인 팩토리 빌드 근처에도 가지 않게 하고 싶습니다. 간단히 소개하죠.

02 · Woojin ChoiDisplay Software

디스플레이 소프트웨어 리드 최우진입니다. 저희 팀은 디스플레이 드라이버와 커버 화면과 메인 화면을 전환하는 로직을 담당합니다.

03 · Jisu HanDisplay Software

같은 디스플레이 소프트웨어팀 한지수입니다. 두 디스플레이 파이프라인의 전원 관리 코드 대부분을 제가 작성해서, 이게 전원 시퀀스 문제라면 아마 제 코드일 겁니다.

04 · Lena HoffmannQorvix Display Engineering

뮌헨에서 참석한 Qorvix 디스플레이 엔지니어링의 Lena Hoffmann입니다. 귀사 칩셋의 디스플레이 컨트롤러와 인터커넥트를 지원합니다.

05 · Takeshi MoriLumina Panel Engineering

도쿄에 있는 Lumina의 Takeshi Mori입니다. Orion Fold의 패널 두 개를 모두 공급하고 있고, 패널 드라이버 IC 타이밍을 담당합니다.

증상과 테스트 환경

06 · Hyemi SongSQE

파악된 내용은 이렇습니다. 앱을 섞어 실행하면서 분당 약 4번씩 단말을 계속 열고 닫는 폴딩 로봇이 6대 있습니다. 지난 일주일 동안 4만 번이 조금 넘는 폴딩 사이클을 돌렸고, 멈춤이 122건 있었으니 폴딩당 약 0.3%입니다. 전환 도중에 화면이 멈추고, 약 10초 후 단말이 재부팅됩니다.

07 · Woojin ChoiDisplay Software

폴딩당 0.3%는 작게 들리지만, 일반 사용자는 하루에 약 80번 단말을 접습니다. 그러면 모든 사용자가 대략 나흘에 한 번씩 멈춤을 겪는다는 뜻입니다. 명백한 출시 차단 이슈입니다.

08 · Hyemi SongSQE

정확합니다. 그리고 가장 어려운 부분은 리셋 원인입니다. 모든 경우에 bark가 아니라 워치독 bite입니다. 그래서 램덤프가 없습니다. 보존된 메모리 영역에 남은 마지막 커널 로그가 가진 전부입니다.

09 · Jisu HanDisplay Software

지난주 기술 공유에서 유나 님이 설명했듯이, bite는 보통 CPU가 bark 인터럽트조차 처리하지 못했다는 뜻입니다. 디스플레이 코드에서 제가 아는 가장 흔한 원인은 소프트웨어 루프가 아니라 레지스터 접근에서 CPU가 멈추는 경우입니다.

10 · Hyemi SongSQE

하드웨어 쪽이 아닌 사람들을 위해 설명해 주실 수 있나요? 레지스터를 읽는 게 어떻게 CPU를 멈추게 할 수 있죠?

11 · Lena HoffmannQorvix Display Engineering

그건 제가 설명할게요. CPU가 디스플레이 컨트롤러의 레지스터를 읽으면, 그 요청은 칩의 인터커넥트를 거쳐 해당 블록으로 갑니다. 블록의 클럭이 꺼져 있거나 전원 도메인이 내려가 있으면 아무도 요청에 응답하지 않습니다. 일부 칩에서는 CPU가 끝내 오지 않는 응답을 영원히 기다립니다. 하드웨어 수준에서 멈춘 거라 인터럽트를 받을 수 없고, 결국 워치독이 무는 거죠.

마지막 커널 로그 읽기

12 · Hyemi SongSQE

우진 님, 마지막 커널 로그에는 뭐가 나오나요?

13 · Woojin ChoiDisplay Software

멈춤 122건 중 98건에서 쓸 만한 로그를 얻었습니다. 모든 경우에 마지막 메시지가 디스플레이 전환 시퀀스에서 나옵니다. 패턴은 일관됩니다. 메인 디스플레이 파이프라인이 전원을 켜기 시작하고, 커버 디스플레이 파이프라인이 전원을 끄기 시작하고, 그다음 로그가 그냥 멈춥니다. 마지막 줄은 보통 커버 파이프라인의 전원 도메인을 끄고 있다는 저희 디버그 메시지입니다.

14 · Jisu HanDisplay Software

그게 가설과 딱 맞아떨어집니다. 커버 파이프라인의 전원 도메인이 꺼진 직후 누군가 그 레지스터를 읽으려고 하면, 정확히 그 지점에서 CPU가 멈출 겁니다. 문제는 저희가 끄기로 결정한 후에 무엇이 커버 파이프라인을 건드리느냐입니다.

15 · Takeshi MoriLumina Panel Engineering

패널의 티어링 이펙트 신호와 관련이 있을 수 있을까요? 저희 패널은 각 프레임 시작 때 신호를 보내고, 귀사 드라이버는 그걸로 다음 업데이트 타이밍을 맞춥니다. 커버 패널이 꺼지는 중에 마지막 신호를 하나 보내면, 인터럽트 핸들러가 컨트롤러 상태를 읽으려고 할 수 있습니다.

16 · Woojin ChoiDisplay Software

아주 좋은 생각입니다. 인터럽트 핸들러는 어떤 프레임이 완료됐는지 확인하려고 상태 레지스터를 읽습니다. 그리고 전환 시퀀스와 독립적으로, 인터럽트를 받은 CPU에서 실행됩니다. 그러니 전원 끄기가 시작된 후에 핸들러가 실행될 수 있는 시간 창이 있습니다.

17 · Jisu HanDisplay Software

그런데 저희는 전원을 끄기 전에 그 인터럽트를 비활성화합니다. 전원 끄기 시퀀스가 제일 먼저 하는 일이에요. 작성할 때 그 코드를 꼼꼼히 확인했습니다.

18 · Lena HoffmannQorvix Display Engineering

인터럽트를 비활성화하면 새 인터럽트 전달은 막지만, 이미 다른 CPU에서 실행 중인 핸들러를 기다려 주지는 않습니다. 비활성화하기 몇 마이크로초 전에 티어링 신호가 도착했다면, 0번 CPU가 전원을 끄는 동안 2번 CPU에서 핸들러가 여전히 진행 중일 수 있습니다. 도메인을 내리기 전에 동기화해서, 진행 중인 핸들러가 끝날 때까지 기다려야 합니다.

19 · Jisu HanDisplay Software

전형적인 실수네요. 말씀이 맞는 것 같습니다. 인터럽트를 비활성화한 뒤에 동기화 함수를 호출하는지 확인해 볼게요. 호출하지 않는다면 거의 확실히 저희 버그입니다.

더 확실한 증거 확보

20 · Hyemi SongSQE

유망한 가설이지만 아직 로그 마지막 줄에서 추측하고 있는 단계입니다. 이런 종류의 hang을 덤프에서 실제로 볼 수 있는 형태로 바꿀 방법이 있을까요?

21 · Lena HoffmannQorvix Display Engineering

네. 저희 인터커넥트에는 접근 타임아웃 감지라는 디버그 기능이 있습니다. 활성화하면, 전원이 꺼진 블록으로 간 요청이 정해진 시간 안에 응답을 받지 못할 때 인터커넥트가 CPU를 영원히 기다리게 두는 대신 에러를 반환합니다. 그러면 커널이 버스 에러 예외를 받고, 보통 접근하던 정확한 주소를 포함한 전체 레지스터 덤프와 함께 패닉이 납니다.

22 · Woojin ChoiDisplay Software

그거 완벽하네요. 추측에서 정확히 어떤 레지스터와 어떤 코드 경로가 원인인지 아는 단계로 넘어갈 수 있겠어요. 왜 기본으로 활성화돼 있지 않나요?

23 · Lena HoffmannQorvix Display Engineering

인터커넥트를 거치는 모든 접근에 약간의 지연을 더하고, 양산에서는 일부 고객이 덤프가 남는 패닉보다 조용한 hang과 재부팅을 선호합니다. 하지만 디버깅에는 매우 귀중합니다. 로봇 단말에 바로 활성화하길 권합니다. 오늘 오후에 설정을 보내 드리겠습니다.

24 · Hyemi SongSQE

좋습니다. 로봇 6대에 대략 300번 접을 때마다 멈춤이 나니까, 하루 안에 덤프 여러 개를 볼 수 있을 겁니다. 그리고 타임아웃 감지가 예상치 못한 방식으로 실패율을 바꾸지 않는지 확인할 수 있도록 로봇 두 대는 원래 설정으로 대조군으로 두겠습니다.

25 · Takeshi MoriLumina Panel Engineering

저희 쪽에서는 꺼지는 동안 티어링 신호 타이밍을 측정하고 싶습니다. 저희 패널이 디스플레이 끄기 명령 후 약 16밀리초 뒤에 귀사 드라이버가 예상하는 것보다 신호를 하나 더 보낼 수 있다고 의심하고 있습니다. 그게 사실이라면 경쟁 상태가 생길 수 있는 시간 창이 넓어집니다.

26 · Jisu HanDisplay Software

유용하긴 하지만, 그걸 근본 원인으로 다루지 않도록 조심하고 싶습니다. 패널이 신호를 하나 더 보내더라도 저희 드라이버는 안전하게 처리해야 합니다. 어쨌든 수정은 저희 쪽에서 해야 합니다.

27 · Takeshi MoriLumina Panel Engineering

전적으로 동의합니다. 왜 그렇게 자주 발생하는지 설명해서, 현실적인 타이밍 조건에서 수정을 테스트하실 수 있게 하려는 것뿐이에요.

수정 방안

28 · Hyemi SongSQE

가설이 내일까지 확인된다고 잠시 가정해 봅시다. 수정은 어떤 모습이고, 위험은 얼마나 되나요?

29 · Jisu HanDisplay Software

이번에도 두 계층입니다. 첫째, 인터럽트를 비활성화한 후 동기화 함수를 호출해서, 전원을 끄기 전에 진행 중인 핸들러가 끝나게 합니다. 그걸로 경쟁 상태가 막힙니다. 둘째, 다중 방어 차원에서 인터럽트 핸들러가 파이프라인이 꺼지는 중이라는 플래그를 확인하고, 레지스터를 건드리지 않고 바로 반환하게 합니다.

30 · Woojin ChoiDisplay Software

두 변경 모두 작습니다. 합쳐서 30줄 정도요. 위험은 타이밍에 있습니다. 핸들러가 실행 중이면 동기화 호출이 수백 마이크로초를 기다릴 수 있어서 폴딩 전환이 약간 길어집니다. 아무도 눈치채지 못할 거라고 보지만, 측정은 해야 합니다.

31 · Lena HoffmannQorvix Display Engineering

세 번째 검사를 추가하고 싶습니다. 디스플레이 드라이버의 모든 레지스터 접근 전에, 적어도 디버그 빌드에서는 전원 도메인이 실제로 켜져 있는지 확인하는 거죠. 저희 레퍼런스 드라이버에 이를 위한 헬퍼가 있습니다. 양산에서는 동작하지 않지만, 개발 중에 다른 코드 경로의 비슷한 실수를 잡아낼 겁니다.

32 · Hyemi SongSQE

그거 정말 마음에 드네요. 조용한 하드웨어 hang을 시끄러운 소프트웨어 경고로 바꾸는 거니까, 개발 중에 저희가 원하는 바로 그거예요.

검증 계획과 일정

33 · Hyemi SongSQE

이제 일정입니다. 팩토리 빌드 마감은 8월 28일, 오늘부터 13일 남았습니다. 거기까지 어떻게 가는지 설명해 주세요.

34 · Woojin ChoiDisplay Software

오늘과 내일은 가설 확인을 위해 접근 타임아웃 감지를 켜고 로봇을 돌립니다. 월요일에 지수 님이 리뷰 받을 수정을 준비합니다. 화요일에 테스트 빌드를 로봇 6대 전체에 올립니다. 약 일주일 걸리는 4만 번 폴딩에서 멈춤이 0건이면 8월 25일경 확신을 가질 수 있습니다. 그러면 3일 여유가 남습니다.

35 · Hyemi SongSQE

실패율이 300분의 1이었는데 4만 번에 실패 0건이면 통계적으로 강한 확신을 줍니다. 그래도 가능하면 로봇을 더 추가하고 싶어요. 힌지 내구성 랩에서 두 대를 빌릴 수 있을까요?

36 · Jisu HanDisplay Software

물어보겠습니다. 최신 소프트웨어가 필요 없는 기계적 테스트를 돌리고 있어서, 두 대를 전환해 줄 수 있을지도 몰라요.

37 · Takeshi MoriLumina Panel Engineering

화요일까지 티어링 신호 측정 결과를 드려서, 필요하면 로봇 한 대를 가장 위험한 타이밍에 접도록 설정하실 수 있게 하겠습니다.

대안과 출시팀 커뮤니케이션

38 · Hyemi SongSQE

월요일에 출시팀과 이야기하기 전에 대안도 필요합니다. 가설이 틀린 걸로 밝혀지거나 수정이 로봇 테스트를 버티지 못하면 플랜 B는 뭔가요? 선택지 하나만 들고 그 회의에 들어가고 싶지 않아요.

39 · Jisu HanDisplay Software

가장 투박한 방법은 커버 파이프라인 전원 끄기를 늦추는 겁니다. 메인 화면이 켜질 때 바로 끄는 대신 100밀리초 더 전원을 유지하는 거죠. 늦게 온 티어링 신호나 진행 중인 핸들러는 블록이 아직 살아 있는 동안 끝날 겁니다. 폴딩할 때마다 전력이 약간 더 들지만, 문제를 거의 확실히 가려 줄 겁니다.

40 · Lena HoffmannQorvix Display Engineering

그런데 '가린다'는 표현이 정확하네요. 지연은 시간 창을 좁히지만 닫지는 않습니다. 부하가 심하면 핸들러가 여전히 100밀리초 이상 지연될 수 있고, 그러면 훨씬 드물게라도 다시 hang이 생기는데, 그러면 시장에서 디버깅하기는 더 어려워집니다.

41 · Woojin ChoiDisplay Software

동의합니다. 지연은 진짜 수정과 함께만 쓰고, 절대 그 대신 쓰지는 않겠습니다. 하지만 팩토리 빌드용 대안으로서, 동기화 수정에 부작용이 보인다면 나흘에 한 번 멈추는 것보다 지연이 훨씬 나은 결과입니다.

42 · Hyemi SongSQE

그럼 출시팀에는 이렇게 설명하겠습니다. 플랜 A는 동기화 수정과 핸들러 검사이며, 25일까지 로봇으로 검증합니다. 플랜 B는 플랜 A에서 예상치 못한 게 보이면 추가 여유로 전원 끄기 지연을 더하는 겁니다. 어느 경우든 8월 28일 마감은 지킵니다.

43 · Takeshi MoriLumina Panel Engineering

도움이 된다면, 향후 패널 펌웨어 업데이트에서 패널 종료 시퀀스를 조정해서 디스플레이 끄기 명령 직후 티어링 신호를 바로 멈추게 할 수도 있습니다. 팩토리 빌드에는 못 들어가지만, 이후 생산 배치에서는 트리거 하나를 없애 줄 겁니다.

44 · Hyemi SongSQE

좋은 장기 개선이네요. 팩토리 빌드에 방해되지 않도록 별도로 추적합시다. Takeshi, 그쪽에서 티켓을 열고 번호를 우진 님께 공유해 주실 수 있나요? 두 팀이 같은 항목을 따라가도록요.

다른 유사 사례 가능성

45 · Lena HoffmannQorvix Display Engineering

제안이 하나 더 있습니다. 블록 전원을 끄기 전에 동기화 없이 인터럽트만 비활성화하는 패턴은 다른 드라이버에서도 반복되기 쉽습니다. Orion Fold의 카메라, 비디오, 터치 드라이버도 블록 전원을 자주 켜고 끄니까 빠르게 점검해 볼 가치가 있을 겁니다.

46 · Woojin ChoiDisplay Software

좋은 지적입니다. 같은 함수 안에서 인터럽트를 비활성화하고 전원 도메인이나 클럭을 끄는 곳을 간단히 검색하면 대부분의 후보를 찾을 수 있을 겁니다. 이번 주에 준호 님 카메라팀과 터치팀에 각자 드라이버를 살펴봐 달라고 요청하겠습니다.

47 · Hyemi SongSQE

그리고 로봇만이 아니라 출시 때까지 모든 Orion Fold 엔지니어링 빌드에서 접근 타임아웃 감지를 켭시다. 어딘가에 또 숨어 있다면 bite가 아니라 덤프를 원하거든요.

실행 항목

48 · Hyemi SongSQE

요약하겠습니다. Lena는 오늘 접근 타임아웃 설정을 보내 주세요. 저 혜미는 오늘 밤 모든 로봇에 그걸 활성화하고 내일 첫 덤프를 공유하겠습니다. 지수 님은 동기화 호출이 빠졌는지 확인하고, 월요일까지 수정과 전원 도메인 검사 헬퍼를 준비해 주세요. 우진 님은 카메라팀, 터치팀과 드라이버 점검을 조율하고, 수정이 들어간 상태에서 전환 시간을 측정해 주세요. Takeshi는 화요일까지 티어링 신호 타이밍을 측정해 주세요.

49 · Jisu HanDisplay Software

사실 이 회의 끝나자마자 코드를 확인하겠습니다. 호출이 빠져 있으면 한 시간 안에 채널에 메시지를 올려서, 아무도 주말 내내 궁금해하지 않게 하겠습니다.

50 · Lena HoffmannQorvix Display Engineering

좋습니다. 형식이 직관적이지 않으니, 덤프의 버스 에러 정보를 해석하는 방법도 함께 넣겠습니다.

마무리 및 다음 회의

51 · Hyemi SongSQE

모두 감사합니다. 특히 휴일 일부를 내주셔서 고맙습니다. 다음 회의는 8월 17일 월요일 한국 시간 오후 5시, 뮌헨 오전 10시, 도쿄 오후 5시입니다. 첫 덤프와 지수 님의 수정을 검토하겠습니다.

52 · Takeshi MoriLumina Panel Engineering

감사합니다, 혜미 님. 월요일에 뵙겠습니다. 측정 결과가 더 일찍 나오면 지수 님께 바로 보내서, 로봇이 최대한 빨리 최악의 타이밍으로 테스트를 시작할 수 있게 하겠습니다.

53 · Lena HoffmannQorvix Display Engineering

그리고 첫 덤프에서 디스플레이 컨트롤러 밖의 주소가 보이면 바로 저에게 보내 주세요. 다른 블록이 관련돼 있다는 뜻이라, 월요일 전에 저희 쪽에서 맞는 동료를 참여시키고 싶습니다.

54 · Woojin ChoiDisplay Software

모두 감사합니다. 첫 덤프가 정확히 우리가 생각하는 곳을 가리키길 바랍니다. 그렇지 않더라도, 적어도 로그 마지막 줄이 아니라 진짜 증거를 보게 될 테니까요.

03 / Business expressions

I appreciate it even more

더욱 감사하다 · 특별한 상황에서 협조해 준 데 대해 감사를 강조할 때

I know it's a public holiday here in Korea, so I appreciate it even more.

응용 연습
You stayed late to fix this, so I appreciate it even more.

a launch blocker

출시 차단 이슈 · 해결되지 않으면 출시할 수 없는 이슈를 지칭할 때

That's clearly a launch blocker.

응용 연습
Any data loss bug is a launch blocker.

In every single case

모든 경우에 예외 없이 · 패턴이 완전히 일관됨을 강조할 때

In every single case, it's a watchdog bite, not a bark.

응용 연습
In every single case, the crash happened during charging.

I can take that one

그건 제가 답할게요 · 질문에 대해 자신이 답하겠다고 나설 때

I can take that one.

응용 연습
I can take that one; I wrote that part of the driver.

simply stops

그냥 멈춘다 · 로그나 동작이 아무 메시지 없이 끊기는 상황을 설명할 때

The pattern is consistent: the main display pipeline starts powering up, the cover display pipeline starts powering down, and then the log simply stops.

응용 연습
The trace simply stops after the suspend call.

fits the theory perfectly

가설과 딱 맞아떨어진다 · 새로운 증거가 가설을 뒷받침할 때

That fits the theory perfectly.

응용 연습
The timing in the logs fits the theory perfectly.

in-flight

진행 중인 · 아직 완료되지 않은 요청이나 처리를 말할 때

You'd need to synchronize, to wait for any in-flight handler to finish, before collapsing the domain.

응용 연습
Wait for all in-flight writes to complete before unmounting.

a classic mistake

전형적인 실수 · 흔히 저지르는 실수임을 인정할 때

That's a classic mistake, and I think you're right.

응용 연습
Freeing memory before the callback finishes is a classic mistake.

from guessing to knowing

추측에서 확실히 아는 단계로 · 더 나은 도구나 데이터로 분석 수준이 올라갈 때

We'd go from guessing to knowing exactly which register and which code path caused it.

응용 연습
Tracing took us from guessing to knowing in one afternoon.

invaluable

매우 귀중한 · 도구나 정보의 가치가 매우 클 때

But for debugging, it's invaluable.

응용 연습
The vendor's register map has been invaluable.

defense in depth

다중 방어 · 한 가지 수정에 의존하지 않고 여러 겹의 보호를 둘 때

Second, as defense in depth, the interrupt handler should check a flag that says the pipeline is powering down, and return immediately without touching any registers.

응용 연습
As defense in depth, we also validate the input in the driver.

a loud software warning

눈에 띄는 소프트웨어 경고 · 조용히 실패하는 대신 문제를 드러나게 하는 것을 말할 때

It turns a silent hardware hang into a loud software warning, which is exactly what we want during development.

응용 연습
I'd rather have a loud software warning than a silent corruption.

Walk me through

차근차근 설명해 주세요 · 계획이나 과정을 단계별로 설명해 달라고 할 때

Walk me through how we get there.

응용 연습
Walk me through the rollback steps.

switch two units over

두 대를 전환하다 · 장비를 다른 용도로 돌려 쓸 때

They're running a mechanical test that doesn't need the latest software, so they may be able to switch two units over.

응용 연습
Can we switch two units over to the stress test tonight?

hiding somewhere

어딘가에 숨어 있는 · 아직 발견되지 않은 문제가 있을 가능성을 말할 때

If there's another one hiding somewhere, I want a dump, not a bite.

응용 연습
There may be another race hiding somewhere in the resume path.

Fingers crossed

잘되길 바랍니다 · 좋은 결과를 바랄 때 가볍게 하는 말

Fingers crossed that the first dump points exactly where we think it does.

응용 연습
Fingers crossed that the vendor drop arrives on time.