on the line
(전화·화상) 회의에 연결되어 있는 · 원격으로 참석한 사람들을 언급할 때
We also have Kernel and BSP, Qorvix, and Lumicore on the line.
응용 연습
We have the carrier lab on the line as well.
SYSTEM SW / 2026-08-10 / System issue triage
장시간 4K 카메라 녹화 중 시스템 hang 원인 분석
Orion에서 4K 60fps 동영상을 25~40분 이상 녹화하면 화면이 멈추고 워치독 리셋이 발생하는 이슈입니다. SQE, 사내 커널·BSP 팀, 칩셋 벤더 Qorvix 멀티미디어 팀, 이미지 센서 벤더 Lumicore가 램덤프 분석, 발열과의 연관성, 실험 계획과 수정 방향을 논의합니다.
가상의 비즈니스 회의 · 중급~고급 · 2,211단어 · 약 18분
Good morning, everyone. Let's get started. This is the first triage call for the camera recording hang on Orion. I'm Tom from SQE, and I'll chair today. Soyeon from my team ran the reproduction over the weekend. We also have Kernel and BSP, Qorvix, and Lumicore on the line. Could everyone introduce themselves briefly?
Soyeon Park, SQE. I own the camera stress tests, and I have the dumps and the thermal logs ready.
Yuna Kwak, Kernel and BSP. Some of you were at the tech share on Friday, where I described an old camera hang. I'm a bit worried we're about to see a sequel.
Junho Kim, also Kernel and BSP. I maintain the camera driver stack on Orion, including our changes on top of the Qorvix image signal processor driver.
Ming Huang, Qorvix multimedia team, joining from Shenzhen. I support the image signal processor, the ISP, and its kernel driver.
Kenji Watanabe from Lumicore in Yokohama. We supply the main camera sensor for Orion. I'm a sensor application engineer, so I can answer questions about the sensor's behavior and its output interface.
Thanks. Soyeon, please walk us through what we've seen so far.
Sure. The issue was first reported by a reviewer who was recording a long concert. On Orion, if you record 4K video at sixty frames per second continuously, after somewhere between twenty-five and forty minutes, the preview freezes. The device stops responding to touch and buttons, and about ten to fifteen seconds later, it reboots. The video file being recorded is usually corrupted, so the user loses the whole recording.
Losing the recording is what makes this so painful. A crash at minute thirty-five of a concert is about as bad as it gets for a camera feature.
Exactly. In the lab, we've reproduced it fourteen times out of thirty attempts on ten devices. A few details are important. First, it never happens at 4K thirty frames per second or at 1080p, even after two hours. Second, it happens faster when the room is warm: at thirty degrees Celsius ambient, it took an average of twenty-six minutes; at twenty-two degrees, it took thirty-eight minutes. Third, on the reset reason, twelve were watchdog barks with a ramdump, and two were watchdog bites with no dump.
Do you have the sensor temperature at the time of the freeze? Our sensor reports its internal temperature through a register, and your camera software logs it, I believe.
We do. In every case, the sensor temperature was between seventy-four and seventy-nine degrees at the moment of the freeze. In the non-failing runs, it peaked around seventy-one degrees.
Yuna, Junho, what do the dumps show?
I followed the same order I described on Friday. The panic reason is the hardware watchdog bark. When I look at the CPUs, seven of the eight are waiting to acquire the same spinlock, and they're all spinning with interrupts disabled. The eighth CPU, CPU three, holds that spinlock, and it's inside the ISP driver's error recovery function, polling a hardware status register in a loop.
And that explains why the whole system freezes, not just the camera. Once CPU three holds the lock with interrupts off and never lets go, every other CPU that touches the camera path piles up behind it. Eventually, nothing can pet the watchdog. In the two bite cases, my guess is that the CPU handling the watchdog interrupt was also one of the CPUs spinning with interrupts disabled, so the bark couldn't be handled.
What's the error recovery function waiting for?
It's waiting for the ISP to report that its input pipeline has drained after an error. Just before the freeze, the kernel log shows a burst of errors from the camera serial interface receiver: checksum errors and frame synchronization errors on the link between the sensor and the ISP. The ISP raises an error interrupt, the driver enters recovery, takes the lock, and waits for the pipeline to drain. But the pipeline never drains, and there's no timeout in that loop.
So we have two layers again, like the storage panic last week. There's a trigger, the link errors at high temperature, and there's a software defect, an unbounded wait with interrupts disabled, that turns a recoverable error into a full system hang.
Kenji, does the sensor behave differently at those temperatures?
The sensor is specified to operate up to eighty-five degrees, so seventy-nine is within specification. However, I should be transparent that signal quality on the high-speed output link does degrade as temperature rises. At 4K sixty, the link runs at its highest data rate, which leaves the smallest margin. So I'm not surprised that errors appear only in that mode. But in our reference design, the error rate at seventy-nine degrees is extremely low, perhaps one corrupted packet per hour.
One corrupted packet per hour would be fine. The ISP is designed to drop a bad frame and continue. What we're seeing in these logs is different: dozens of errors within a few milliseconds. That looks more like the link losing synchronization completely, which the ISP treats as a fatal input error.
Complete loss of synchronization would surprise me with the sensor alone. I wonder whether the board layout plays a role. The trace length and the connector on Orion are different from our reference design. Has your hardware team measured the eye diagram on that link at high temperature?
I don't believe so, at least not at seventy-nine degrees. I'll ask them. But I want to be careful not to turn this into a hardware debate that takes a month. Even if the link is marginal, we can't change the board on devices that are already in customers' hands.
Right. Whatever the trigger is, the software has to survive it. The worst acceptable outcome for a link failure should be a few dropped frames, or at most a stopped recording with the file saved properly. A full system hang is never acceptable.
Ming, why doesn't the pipeline drain? Is there a way to force it?
When the input link loses synchronization in the middle of a frame, the ISP's input stage can get stuck waiting for the end of that frame, which never arrives. In that state, the drain never completes. The documented way out is a hardware reset of the ISP input block, followed by reprogramming the pipeline. Our reference driver does that after a timeout of one hundred milliseconds. It looks like the Orion driver lost that timeout at some point.
That's a little embarrassing, but I think you're right. I checked the history this morning. Last year, we restructured the recovery function to support a multi-camera mode, and the timeout was dropped during the rework. It wasn't caught in review because the old code was spread across two functions. I'll own that.
I'd go one step further than restoring the timeout. Polling a hardware register in a loop while holding a spinlock with interrupts disabled is risky even with a timeout, because one hundred milliseconds is a very long time for seven other CPUs to spin. I'd restructure it: mark the pipeline as being in recovery, release the lock, do the wait outside the lock with interrupts enabled, then reset and take the lock again only for the short reprogramming step.
That's a better design, and it's closer to what our newer driver generation does. The only complication is that other parts of the driver must check the 'in recovery' state and avoid touching the hardware during that window. I can share the pattern from our newer driver to save Junho some time.
How do the two options compare in risk and time? I'm thinking about the maintenance release schedule.
Restoring the timeout is a small change, maybe twenty lines, and I could have it ready tomorrow. Yuna's restructuring is better long-term, but it's a few hundred lines and touches locking across the driver. I'd estimate a week to write and another week of testing. My suggestion is to do both in sequence: the timeout fix goes into the September maintenance release as a quick mitigation, and the restructuring goes into October after proper testing.
I can support that, as long as the October change doesn't quietly slip to November. Temporary fixes have a way of becoming permanent.
There's another angle I'd like us to cover. Even with the timeout fix, the ISP reset will interrupt the video stream. What happens to the recording? If the camera app crashes and the file is still corrupted, users will still lose their concert.
Good point. After the reset, the driver reports an error to the camera service. As far as I know, the current app behavior is to stop the recording and show an error. Whether the file is finalized properly depends on the framework's recorder, which isn't my area.
Then we need the framework camera team in the loop. Soyeon, can you test what happens to the file when we inject a link error during recording on a build with the timeout fix? If the file is unplayable, that's a separate issue for the framework team, and it needs to be fixed in the same release.
For error injection, our ISP has a debug register that simulates loss of synchronization on the input link. I'll send Junho the instructions. It's much faster than heating the device in a thermal chamber for half an hour every time.
Ideally, the camera could also reduce the risk before the error happens. When the sensor temperature crosses seventy-five degrees, the camera app could warn the user or step down to 4K thirty frames per second. That's what several other device makers do with our sensor.
That's a product decision, so I'll raise it with the camera product owner rather than decide it here. But I'll include it in the summary as a recommendation from Lumicore.
Before we talk about validation, are any other products exposed? The ISP driver is shared across several of our devices.
The restructured recovery function from last year is used on Orion and on the upcoming Orion Fold. Orion Lite uses an older ISP and a different driver, so it isn't affected. Orion Fold is the bigger concern, because it supports 4K sixty on two of its cameras, and it has less room for heat to escape in the folded position.
Orion Fold also uses a newer revision of our ISP, but the input stage behaves the same way when synchronization is lost, so I would assume it's vulnerable until proven otherwise.
Then the timeout fix has to go into the Orion Fold launch software as well. I'll flag it to Sarah's launch team today, since they're tracking every change that goes into their final builds.
I'd also like to run the original thermal scenario on a few Orion Fold prototypes, folded and unfolded. If the fold position makes the sensor hotter, we'll see the issue sooner there, and that would be useful data for the hardware team too.
Let's agree on how we'll validate the fix. Soyeon?
I propose three steps. First, error injection on ten devices, a hundred injections each, with the timeout fix. Pass criteria: zero system hangs, and the device remains responsive. Second, the original scenario: one-hour 4K sixty recordings at thirty degrees ambient, twenty runs. Pass criteria: zero hangs, and if the recording stops, the file must be playable. Third, our standard camera regression suite to make sure we didn't break anything else.
For the error injection step, please also enable the lock debugging options on two of the devices. If there's any other path that waits too long with the lock held, lock debugging will tell us directly, instead of us finding it the hard way in the field.
Will do. With the build tomorrow, I can finish the first two steps by Thursday and the regression suite by Monday.
Let me summarize the action items. Junho: restore the timeout and reset path in the recovery function, test build by tomorrow. Ming: send the error injection instructions and the recovery pattern from your newer driver today. Yuna: design the restructured recovery with Junho, target the October release. Soyeon: run the three-step validation, results by Monday. Kenji: share your reference link measurements at high temperature, so our hardware team has a baseline. And I'll contact the hardware team about the link measurements and the camera product owner about the thermal step-down.
I'll send the measurement report by Wednesday. If your hardware team wants to compare setups, I can also join a call with them.
And I'll add a unit test that simulates a drain that never completes, so if anyone drops the timeout again in a future refactoring, the test fails immediately.
Excellent. That last point is exactly how we stop this from coming back. Thank you, everyone. Our next call is Thursday, August 13th, at 10 a.m. Korea time, which is 9 a.m. in Shenzhen and 10 a.m. in Yokohama. We'll review the error injection and the first long recording results.
Thank you, Tom. I'll be there, and I'll bring the recovery timing data from our own lab for comparison.
See you Thursday. And I think this case just earned a place on the wiki page, too.
좋은 아침입니다, 여러분. 시작하겠습니다. Orion 카메라 녹화 hang에 대한 첫 번째 분류 회의입니다. 저는 SQE의 Tom이고 오늘 진행을 맡겠습니다. 저희 팀 소연 님이 주말 동안 재현을 진행했습니다. 커널·BSP, Qorvix, Lumicore도 참석해 계십니다. 간단히 소개 부탁드립니다.
SQE 박소연입니다. 카메라 스트레스 테스트를 담당하고 있고, 덤프와 발열 로그를 준비해 두었습니다.
커널·BSP 팀 곽유나입니다. 몇 분은 금요일 기술 공유 세션에 계셨는데, 거기서 예전 카메라 hang 사례를 설명했죠. 그 속편을 보게 될까 봐 좀 걱정됩니다.
같은 커널·BSP 팀 김준호입니다. Qorvix 이미지 신호 처리기 드라이버 위에 올린 저희 수정 사항을 포함해 Orion 카메라 드라이버 스택을 유지보수하고 있습니다.
선전에서 참석한 Qorvix 멀티미디어팀 Ming Huang입니다. 이미지 신호 처리기, 즉 ISP와 그 커널 드라이버를 지원합니다.
요코하마에 있는 Lumicore의 Kenji Watanabe입니다. Orion의 메인 카메라 센서를 공급합니다. 센서 애플리케이션 엔지니어라서 센서 동작과 출력 인터페이스에 관한 질문에 답할 수 있습니다.
감사합니다. 소연 님, 지금까지 본 것을 설명해 주세요.
네. 이 이슈는 긴 콘서트를 녹화하던 한 리뷰어가 처음 보고했습니다. Orion에서 4K 60fps 동영상을 연속으로 녹화하면 25분에서 40분 사이에 프리뷰가 멈춥니다. 단말이 터치와 버튼에 반응하지 않고, 10~15초 후 재부팅됩니다. 녹화 중이던 동영상 파일은 보통 손상되기 때문에 사용자는 녹화 전체를 잃습니다.
녹화를 잃는다는 게 이 이슈를 그렇게 고통스럽게 만드는 부분이죠. 콘서트 35분째에 크래시가 나는 건 카메라 기능으로서 최악에 가깝습니다.
맞습니다. 랩에서 단말 10대로 30번 시도해 14번 재현했습니다. 몇 가지 중요한 세부 사항이 있습니다. 첫째, 4K 30fps나 1080p에서는 두 시간이 지나도 절대 발생하지 않습니다. 둘째, 방이 따뜻할수록 더 빨리 발생합니다. 주변 온도 30도에서는 평균 26분, 22도에서는 38분 걸렸습니다. 셋째, 리셋 원인은 12번이 램덤프가 있는 워치독 bark, 2번이 덤프 없는 워치독 bite였습니다.
멈춤 시점의 센서 온도가 있나요? 저희 센서는 레지스터로 내부 온도를 보고하고, 귀사 카메라 소프트웨어가 그걸 로그로 남기는 걸로 알고 있습니다.
있습니다. 모든 경우에 멈춤 순간의 센서 온도가 74도에서 79도 사이였습니다. 실패하지 않은 실행에서는 최고 71도 정도였습니다.
유나 님, 준호 님, 덤프에는 뭐가 나오나요?
금요일에 설명한 순서 그대로 따랐습니다. 패닉 원인은 하드웨어 워치독 bark입니다. CPU를 보면 8개 중 7개가 같은 스핀락을 얻으려고 기다리고 있고, 모두 인터럽트가 비활성화된 상태로 스핀하고 있습니다. 여덟 번째 CPU인 3번 CPU가 그 스핀락을 잡고 있는데, ISP 드라이버의 에러 복구 함수 안에서 하드웨어 상태 레지스터를 루프로 폴링하고 있습니다.
그래서 카메라만이 아니라 시스템 전체가 멈추는 거죠. 3번 CPU가 인터럽트를 끈 채 락을 잡고 절대 놓지 않으면, 카메라 경로를 건드리는 다른 모든 CPU가 그 뒤에 쌓입니다. 결국 아무도 워치독을 쓰다듬지 못하게 됩니다. bite 두 건의 경우, 워치독 인터럽트를 처리해야 할 CPU도 인터럽트를 끈 채 스핀하던 CPU 중 하나여서 bark를 처리하지 못한 것 같습니다.
에러 복구 함수는 뭘 기다리고 있나요?
에러 후 ISP가 입력 파이프라인이 비워졌다고 보고하기를 기다리고 있습니다. 멈추기 직전에 커널 로그를 보면 카메라 시리얼 인터페이스 수신부에서 에러가 연달아 발생합니다. 센서와 ISP 사이 링크에서의 체크섬 에러와 프레임 동기화 에러입니다. ISP가 에러 인터럽트를 올리면 드라이버가 복구에 들어가서 락을 잡고 파이프라인이 비워지기를 기다립니다. 그런데 파이프라인은 끝내 비워지지 않고, 그 루프에는 타임아웃이 없습니다.
그러니까 지난주 스토리지 패닉처럼 또 두 계층이 있네요. 트리거는 고온에서의 링크 에러이고, 소프트웨어 결함은 인터럽트를 끈 채 끝없이 기다리는 것으로, 복구 가능한 에러를 시스템 전체 hang으로 바꿔 버립니다.
Kenji, 그 온도에서 센서가 다르게 동작하나요?
센서는 85도까지 동작하도록 규격이 정해져 있어서 79도는 규격 범위 안입니다. 다만 솔직히 말씀드리면, 온도가 올라가면 고속 출력 링크의 신호 품질이 저하되는 건 사실입니다. 4K 60fps에서는 링크가 최고 데이터 속도로 동작해서 여유가 가장 작습니다. 그래서 그 모드에서만 에러가 나타나는 건 놀랍지 않습니다. 하지만 저희 레퍼런스 설계에서는 79도에서의 에러율이 극히 낮아서, 시간당 손상 패킷이 한 개 정도입니다.
시간당 손상 패킷 한 개는 괜찮습니다. ISP는 불량 프레임을 버리고 계속 진행하도록 설계돼 있습니다. 이 로그에서 보이는 건 다릅니다. 수 밀리초 안에 수십 개의 에러가 나옵니다. 그건 링크가 동기화를 완전히 잃는 쪽에 가깝고, ISP는 그걸 치명적인 입력 에러로 처리합니다.
센서만으로 동기화를 완전히 잃는다면 놀라울 겁니다. 보드 레이아웃이 역할을 하는지 궁금하네요. Orion의 배선 길이와 커넥터는 저희 레퍼런스 설계와 다릅니다. 하드웨어팀이 고온에서 그 링크의 아이 다이어그램을 측정해 봤나요?
적어도 79도에서는 안 한 걸로 압니다. 물어보겠습니다. 하지만 이걸 한 달짜리 하드웨어 논쟁으로 만들지 않도록 조심하고 싶습니다. 링크가 아슬아슬하더라도, 이미 고객 손에 있는 단말의 보드는 바꿀 수 없으니까요.
맞습니다. 트리거가 무엇이든 소프트웨어는 그걸 견뎌야 합니다. 링크 장애에 대해 허용 가능한 최악의 결과는 프레임 몇 개가 빠지는 것, 아니면 기껏해야 파일이 제대로 저장된 채 녹화가 멈추는 것이어야 합니다. 시스템 전체 hang은 절대 허용할 수 없습니다.
Ming, 왜 파이프라인이 비워지지 않나요? 강제로 비울 방법이 있나요?
프레임 중간에 입력 링크가 동기화를 잃으면, ISP 입력 단계가 끝내 오지 않는 그 프레임의 끝을 기다리며 멈출 수 있습니다. 그 상태에서는 비우기가 절대 완료되지 않습니다. 문서화된 탈출 방법은 ISP 입력 블록을 하드웨어 리셋하고 파이프라인을 다시 프로그래밍하는 겁니다. 저희 레퍼런스 드라이버는 100밀리초 타임아웃 후에 그렇게 합니다. Orion 드라이버는 어느 시점에 그 타임아웃을 잃어버린 것 같습니다.
좀 민망하지만 말씀이 맞는 것 같습니다. 오늘 아침에 히스토리를 확인했습니다. 작년에 멀티 카메라 모드를 지원하려고 복구 함수를 재구성했는데, 그 재작업 중에 타임아웃이 빠졌습니다. 이전 코드가 두 함수에 나뉘어 있어서 리뷰에서 잡히지 않았습니다. 제 책임으로 인정하겠습니다.
저는 타임아웃 복원에서 한 걸음 더 나아가겠습니다. 인터럽트를 끈 채 스핀락을 잡고 하드웨어 레지스터를 루프로 폴링하는 건 타임아웃이 있어도 위험합니다. 다른 CPU 7개가 스핀하기에 100밀리초는 매우 긴 시간이거든요. 저라면 구조를 바꾸겠습니다. 파이프라인을 복구 중으로 표시하고, 락을 놓고, 인터럽트를 켠 채 락 밖에서 기다리고, 리셋한 다음 짧은 재프로그래밍 단계에서만 다시 락을 잡는 거죠.
더 나은 설계이고, 저희 신세대 드라이버가 하는 방식에 더 가깝습니다. 유일하게 복잡한 점은 드라이버의 다른 부분들이 '복구 중' 상태를 확인하고 그 시간 동안 하드웨어를 건드리지 않아야 한다는 겁니다. 준호 님 시간을 아낄 수 있게 신세대 드라이버의 패턴을 공유해 드릴게요.
두 방안은 위험과 시간 면에서 어떻게 비교되나요? 유지보수 릴리스 일정을 생각하고 있어서요.
타임아웃 복원은 작은 변경으로 20줄 정도이고, 내일까지 준비할 수 있습니다. 유나 님의 구조 변경은 장기적으로 더 낫지만, 수백 줄이고 드라이버 전반의 락킹을 건드립니다. 작성에 일주일, 테스트에 일주일이 더 걸릴 것으로 봅니다. 제 제안은 둘 다 순서대로 하는 겁니다. 타임아웃 수정은 빠른 완화책으로 9월 유지보수 릴리스에 넣고, 구조 변경은 제대로 테스트한 후 10월에 넣는 거죠.
10월 변경이 조용히 11월로 밀리지만 않는다면 지지합니다. 임시 수정은 영구적으로 굳어지는 경향이 있거든요.
다루고 싶은 다른 측면이 있습니다. 타임아웃 수정이 들어가도 ISP 리셋은 비디오 스트림을 끊을 겁니다. 녹화는 어떻게 되나요? 카메라 앱이 크래시 나고 파일이 여전히 손상된다면, 사용자는 여전히 콘서트 영상을 잃게 됩니다.
좋은 지적입니다. 리셋 후 드라이버는 카메라 서비스에 에러를 보고합니다. 제가 알기로 현재 앱 동작은 녹화를 멈추고 에러를 표시하는 겁니다. 파일이 제대로 마무리되는지는 프레임워크 레코더에 달려 있는데, 제 영역은 아닙니다.
그럼 프레임워크 카메라팀도 참여해야 합니다. 소연 님, 타임아웃 수정이 들어간 빌드에서 녹화 중 링크 에러를 주입했을 때 파일이 어떻게 되는지 테스트해 줄 수 있나요? 파일이 재생 불가능하다면 그건 프레임워크팀의 별도 이슈이고, 같은 릴리스에서 고쳐야 합니다.
에러 주입을 위해서 저희 ISP에는 입력 링크의 동기화 손실을 시뮬레이션하는 디버그 레지스터가 있습니다. 준호 님께 방법을 보내 드릴게요. 매번 30분씩 열 챔버에서 단말을 가열하는 것보다 훨씬 빠릅니다.
이상적으로는 에러가 나기 전에 카메라가 위험을 줄일 수도 있습니다. 센서 온도가 75도를 넘으면 카메라 앱이 사용자에게 경고하거나 4K 30fps로 낮추는 거죠. 저희 센서를 쓰는 다른 여러 제조사가 그렇게 합니다.
그건 제품 결정이라 여기서 정하기보다 카메라 제품 담당자에게 제기하겠습니다. 하지만 Lumicore의 권고 사항으로 요약에 포함하겠습니다.
검증 이야기 전에, 다른 제품도 노출돼 있나요? ISP 드라이버는 여러 단말에서 공유되잖아요.
작년에 구조를 바꾼 복구 함수는 Orion과 출시 예정인 Orion Fold에서 쓰입니다. Orion Lite는 이전 ISP와 다른 드라이버를 써서 영향이 없습니다. 더 큰 걱정은 Orion Fold입니다. 카메라 두 개에서 4K 60fps를 지원하고, 접힌 상태에서는 열이 빠져나갈 공간이 더 적거든요.
Orion Fold는 저희 ISP의 더 새로운 리비전을 쓰지만, 동기화를 잃었을 때 입력 단계는 같은 방식으로 동작하니, 아니라고 증명될 때까지는 취약하다고 가정하겠습니다.
그럼 타임아웃 수정은 Orion Fold 출시 소프트웨어에도 들어가야 합니다. 최종 빌드에 들어가는 모든 변경을 추적하고 있는 Sarah의 출시팀에 오늘 알리겠습니다.
Orion Fold 시제품 몇 대로 접은 상태와 펼친 상태 각각에서 원래 발열 시나리오도 돌려 보고 싶습니다. 접힌 상태에서 센서가 더 뜨거워진다면 거기서 문제가 더 빨리 보일 테고, 하드웨어팀에도 유용한 데이터가 될 겁니다.
수정 검증 방법을 합의합시다. 소연 님?
세 단계를 제안합니다. 첫째, 타임아웃 수정이 들어간 단말 10대에 각각 100번씩 에러를 주입합니다. 통과 기준은 시스템 hang 0건, 그리고 단말이 계속 반응하는 것입니다. 둘째, 원래 시나리오입니다. 주변 온도 30도에서 4K 60fps 1시간 녹화를 20회 실행합니다. 통과 기준은 hang 0건이고, 녹화가 멈추면 파일은 재생 가능해야 합니다. 셋째, 다른 걸 깨뜨리지 않았는지 확인하기 위한 표준 카메라 회귀 스위트입니다.
에러 주입 단계에서는 단말 두 대에 락 디버깅 옵션도 켜 주세요. 락을 잡은 채 너무 오래 기다리는 다른 경로가 있으면, 시장에서 어렵게 발견하는 대신 락 디버깅이 바로 알려 줄 겁니다.
그렇게 하겠습니다. 내일 빌드를 받으면 목요일까지 처음 두 단계를 끝내고, 회귀 스위트는 월요일까지 마치겠습니다.
실행 항목을 요약하겠습니다. 준호 님은 복구 함수에 타임아웃과 리셋 경로를 복원해서 내일까지 테스트 빌드를 만들어 주세요. Ming은 오늘 에러 주입 방법과 신세대 드라이버의 복구 패턴을 보내 주세요. 유나 님은 준호 님과 함께 구조 변경된 복구를 설계하고 10월 릴리스를 목표로 해 주세요. 소연 님은 세 단계 검증을 돌려 월요일까지 결과를 주세요. Kenji는 저희 하드웨어팀이 기준치를 가질 수 있도록 고온에서의 레퍼런스 링크 측정값을 공유해 주세요. 그리고 저는 하드웨어팀에 링크 측정을, 카메라 제품 담당자에게 발열 시 단계 하향을 문의하겠습니다.
수요일까지 측정 보고서를 보내겠습니다. 하드웨어팀이 측정 환경을 비교하고 싶어 하면 그들과의 회의에도 참여할 수 있습니다.
그리고 비우기가 끝나지 않는 상황을 시뮬레이션하는 단위 테스트를 추가해서, 나중에 리팩터링 중 누군가 타임아웃을 또 빼면 테스트가 바로 실패하게 하겠습니다.
훌륭합니다. 마지막 포인트가 바로 이 문제가 재발하지 않게 하는 방법이죠. 모두 감사합니다. 다음 회의는 8월 13일 목요일 한국 시간 오전 10시, 선전 오전 9시, 요코하마 오전 10시입니다. 에러 주입과 첫 장시간 녹화 결과를 검토하겠습니다.
감사합니다, Tom. 참석하겠습니다. 비교할 수 있게 저희 랩의 복구 타이밍 데이터도 가져가겠습니다.
목요일에 봬요. 그리고 이 사례도 위키 페이지에 들어갈 자격을 얻은 것 같네요.
(전화·화상) 회의에 연결되어 있는 · 원격으로 참석한 사람들을 언급할 때
We also have Kernel and BSP, Qorvix, and Lumicore on the line.
응용 연습
We have the carrier lab on the line as well.
속편 · 비슷한 문제가 다시 생길까 걱정하는 상황을 가볍게 표현할 때
I'm a bit worried we're about to see a sequel.
응용 연습
This looks like a sequel to last month's boot loop.
거의 최악인 · 상황의 심각성을 강조할 때
A crash at minute thirty-five of a concert is about as bad as it gets for a camera feature.
응용 연습
Losing user data during an update is about as bad as it gets.
그 뒤에 쌓이다 · 하나가 막히면 뒤의 작업들이 연쇄적으로 대기하는 상황을 설명할 때
Once CPU three holds the lock with interrupts off and never lets go, every other CPU that touches the camera path piles up behind it.
응용 연습
When the binder thread blocks, every request piles up behind it.
절대 놓지 않는다 · 락이나 자원을 해제하지 않는 상황을 묘사할 때
Once CPU three holds the lock with interrupts off and never lets go, every other CPU that touches the camera path piles up behind it.
응용 연습
The driver takes the wakelock and never lets go.
또 두 계층(의 원인) · 트리거와 소프트웨어 결함이 겹친 구조를 설명할 때
So we have two layers again, like the storage panic last week.
응용 연습
We have two layers again: a slow vendor service and a missing timeout.
여유가 가장 작다 · 조건이 한계에 가까워 위험이 커지는 상황을 말할 때
At 4K sixty, the link runs at its highest data rate, which leaves the smallest margin.
응용 연습
Running at the top frequency leaves the smallest margin for voltage drops.
~하지 않도록 조심하고 싶다 · 논의가 엉뚱한 방향으로 흐르지 않게 경계할 때
But I want to be careful not to turn this into a hardware debate that takes a month.
응용 연습
I want to be careful not to blame the vendor before we have data.
고객 손에 있는, 이미 판매된 · 이미 출시된 제품의 제약을 말할 때
Even if the link is marginal, we can't change the board on devices that are already in customers' hands.
응용 연습
Two million units are already in customers' hands.
그것을 견뎌 내다 · 예외 상황에서도 소프트웨어가 정상 동작해야 함을 강조할 때
Whatever the trigger is, the software has to survive it.
응용 연습
Power can fail at any time, and the file system has to survive it.
그건 제 책임으로 인정하겠다 · 자신의 실수를 인정할 때
I'll own that.
응용 연습
The review missed it, and I'll own that.
한 걸음 더 나아가다 · 제안보다 더 근본적인 해결을 제시할 때
I'd go one step further than restoring the timeout.
응용 연습
I'd go one step further and add a regression test.
~하는 경향이 있다 · 흔히 일어나는 바람직하지 않은 패턴을 경고할 때
Temporary fixes have a way of becoming permanent.
응용 연습
Debug flags have a way of ending up in production.
(논의·정보에) 참여시킨 · 관련 팀을 논의에 포함해야 할 때
Then we need the framework camera team in the loop.
응용 연습
Please keep the carrier team in the loop on the new date.
어렵게, 쓴 경험을 통해 · 사전에 막지 못하고 문제를 겪고 나서야 아는 상황을 말할 때
If there's any other path that waits too long with the lock held, lock debugging will tell us directly, instead of us finding it the hard way in the field.
응용 연습
We learned the hard way that thermal tests need real-world ambient temperatures.
이 문제가 재발하지 않게 하다 · 재발 방지 조치의 의미를 강조할 때
That last point is exactly how we stop this from coming back.
응용 연습
A presubmit test is the best way to stop this from coming back.