Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wTdeH-000ev0-39 for pgsql-hackers@arkaria.postgresql.org; Sun, 31 May 2026 10:44:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wTddF-007K5G-2s for pgsql-hackers@arkaria.postgresql.org; Sun, 31 May 2026 10:43:02 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wTddF-007K58-1W for pgsql-hackers@lists.postgresql.org; Sun, 31 May 2026 10:43:01 +0000 Received: from mail-ej1-x62c.google.com ([2a00:1450:4864:20::62c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wTddD-00000000P8r-2Hqr for pgsql-hackers@lists.postgresql.org; Sun, 31 May 2026 10:43:00 +0000 Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-bdce61897ebso994537066b.2 for ; Sun, 31 May 2026 03:42:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780224173; cv=none; d=google.com; s=arc-20240605; b=dt+I7NWS6XH9HWCns96E7Awa6H6w62janyGNvhyC6gPJuyl3Po4RWMM2OwXpFzBuZS sVN/M+hUkcvlJXx+ijopz+s94LhU+7TcHExdK+jJ/OS8J52SAbXNVRbTlZbTYNok/2uu 8D1nkxW16jV+8c3B4pELjEBy6ogIV2X3awh7d50TiYvCZBHaru/aD3RjGSviFKWHggcj Bm3gM29LTiaXOx+Yuzz+0K2Ab7h7mjTjTJJyb/ZxSRIPXjjnQHR21tTS/29KmvE6FCfU SoPHoa4yu7bfSrQm7CvvKYpaSBoDzsDk0KOwj7m/rFY8LmueOPNX7yPMzyjLbRyv1J7p CZ/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=EdYqXm7PWbQEMnXVotNipXqL6k8hBPsg3LLpRlgss20=; fh=O9AyUQDiHhQtd1if/2EAPWp1Aj1L2Xe6onaZf0sF0Bk=; b=EfO31smLAWL6vAlLXFEfr2zt7jUMi32dqy1Nhg/82R7RzXGFEUKBmYIWnRfDn+2Bbf FX0cIgVMCBwepGxaSzsAxOf0JS901U1+EIYKkjuF3/rdNEIjZBSIv+rtRTdX4vnXQV5H IO/dU2du7Uoun/QB5G7/iTQnBUOHnFsyMo4Kmnqqn55KkwmVyXYjnIm0aMvpAWtOhqJQ voMDBmHwuTB60G0j5mYO3rOStQngFvXbu1xKq1MyiKUkFzhwkxJBS5VLG5paIBgjdRCz QaENG/izLKCOp9A00O09AlrkvchmAzDBvaInLKckf76tGUj91TgeqJgJA3q8ZVK8GG0S WxQQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780224173; x=1780828973; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=EdYqXm7PWbQEMnXVotNipXqL6k8hBPsg3LLpRlgss20=; b=XxWEhQtSyNLE4xuBkYoXiVzVLToqmVe3tQ515QkVXSo9WBdRr0K9Z29q4Oieat6lN1 JHBLJfD8geOp6LvAabNUzu3Wkl9//sFh0ayzso+hX39ZyKvsJZU5Bf7GqSR7yawrubUd 2ogmZRc5nxJ1bKZeomHhNovsNRZeL+9OFFTp4FbS1c/kd+Fmd3t9kzRk12ywt2hEZnHa lC2tDo0cSINdFoI5J9okcnBVYF3xvhhtbrMxYJCcGq4r0E4ClOeNyoYCMehkPQt4CzXi Y7BLxDKhpfC5Z7HChaYUj1YtIPWQa+snWXAgQOvOgLVe1JEU1Nui155+nIb+Z7Vi7zMT ecXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780224173; x=1780828973; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=EdYqXm7PWbQEMnXVotNipXqL6k8hBPsg3LLpRlgss20=; b=GB/V+gp1ji7gqlokGBOlyTzfdNWVlOLWgQ7CXJUJ/jd8vTbxy0eHBugs/nv5s0rUij uxmCqiBL/4Zlf4R/qo8j3Sxi3qWPt7pPQDvV5fFCC3dWy4YTqCt2agjaGOmNPfPF0Qxo 6D9JIbAKPklg7DhnKsbK5xtewn6ftAihgJuRBwx0+rwwn7edwmXOETRPwRLZJhbSy5ut VzqyKGZpwqP5ZLPbb+GAx7bC15Ze1E9/4ALaaibLqPpZ/f1QeuTUOYOj4+gonlHMWu8p rU+QuUi/kAFFbkQhmVIlGPMrPj3cjgFj35h4/je4vOry4Ao+T/sSLSsTI95/zzal3rnP Rbbw== X-Gm-Message-State: AOJu0YypSIQw6mqHRIlxp9sfhz+rTawFo66JoN4eACYVHsDjMCaIiCag +ByHhHrwSALSutMCxgeHnq6KDCk2HDWPrhuXBKGnxdNat41aVYH5wvI2hIpHGhKrwYPHXcr4dZz cLt7MvsOIpXHSGMimWFXwKdPxpLvpulgVyTA8pPo= X-Gm-Gg: Acq92OGw4/SnnFLa4KZUDLx6NG/0zbgLyJMqGUo/MX/Fg6xdPJA1oooZZLahQmeFrer ZrVT7mwDSa9/RmPFNmV1xtGCIqnhiuo5JXcrCZ8HNafRnKfmJXAf+fO1iCpadcPUiVlWTzkZWFa E0K55ot+nbkkd0G5628Sml1oWMFakhSI3ft3Evj62vmH0aEzgwDPtcBgl3wgLc0+/OEPqeIlkuK sGJ9nFyG/5HBeqz6ajDzaQ6UUcOwOoE5/50L77JtlTNEVSIjl7nT8yekuL3iD0BEome5VOalF8o WCFfGB20la1Ch1MhtwBOZS5knfZhd4kCUs9x2L5TXpdShg3hKeMn+uwhLaxJTXY= X-Received: by 2002:a17:906:8a46:b0:bec:de7b:163c with SMTP id a640c23a62f3a-becde7b18c2mr35737066b.35.1780224173166; Sun, 31 May 2026 03:42:53 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: =?UTF-8?B?7Iug7ISx7KSA?= Date: Sun, 31 May 2026 19:42:41 +0900 X-Gm-Features: AVHnY4ItWA58FVO8lZ8eCR3p8yo5Fw1wDGtkwYZ4_-I8mf4f6ezOQ0y_bk8AnPQ Message-ID: Subject: Re: Add wait events for server logging destination writes To: pgsql-hackers@lists.postgresql.org Cc: Kirk Wolak , Andrey Borodin , Andreas Karlsson , Nikolay Samokhvalov Content-Type: multipart/mixed; boundary="0000000000007902f406531abd1a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007902f406531abd1a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, cfbot caught a build failure on v1, in the SanityCheck task on Linux and Windows: elog.c uses pgstat_report_wait_start()/end() and the WAIT_EVENT_* constants but didn't include utils/wait_event.h. It only built here because of an accidental transitive include on my machine; on the CI images the declarations weren't visible. v2 fixes that by adding the missing #include "utils/wait_event.h" to elog.c, folded into 0001 so that patch builds on its own. No other changes; the wait events and the reported write paths are the same as in v1. v2-0001 adds the two events and covers the write(2) paths. v2-0002 covers the Windows WriteConsoleW() path, split out as before. Applies cleanly on current master; full build passes locally. Thanks, Seongjun Shin 2026=EB=85=84 5=EC=9B=94 31=EC=9D=BC (=EC=9D=BC) =EC=98=A4=ED=9B=84 5:50, = =EC=8B=A0=EC=84=B1=EC=A4=80 =EB=8B=98=EC=9D=B4 =EC=9E= =91=EC=84=B1: > > Hi hackers, > > The write(2) calls that flush server log output aren't covered by wait > events. When a backend logs something, the writes go out in: > > - write_pipe_chunks(): write(2) to the syslogger pipe > - write_console(): write(2) to stderr (WriteConsoleW() on Windows) > > If one of those blocks -- syslogger pipe full, slow console, slow log > device -- pg_stat_activity just shows wait_event =3D NULL until it > returns. Since NULL usually reads as "on CPU", a backend stuck writing > logs looks like it's doing work, so logging-related stalls are easy to > miss. > > Attached is a short series that adds two WaitEventIO events and reports > them around those writes: > > IO / SysloggerWrite - write(2) to the syslogger pipe > IO / StderrWrite - write(2) to stderr, and WriteConsoleW() > > 0001 adds the events and covers the write(2) paths. 0002 does the > Windows WriteConsoleW() path, split out since it's platform-specific. > > It only wraps the leaf write call and uses the existing > pgstat_report_wait_start()/end() helpers, so it stays allocation-free > and safe to call from inside the error-reporting path. > > I did a quick before/after to make sure the events show up: 8 backends > each emitting large RAISE LOG lines, sampling wait_event from > pg_stat_activity every 50 ms for 20 s. > > - logging_collector =3D on (syslogger pipe): > master: NULL 100.0% (2184/2184) > patched: IO/SysloggerWrite 99.1% (2204/2224), NULL 0.9% > > - logging_collector =3D off (stderr): > master: NULL 100.0% (2144/2144) > patched: IO/StderrWrite 90.7% (1952/2152), NULL 9.3% > > On master that wait time is just invisible; with the patch it lands on > the new events. I can send the scripts and raw samples if anyone wants > to reproduce it. > > Applies on current master. A couple of things I'm unsure about and > would appreciate input on: whether the event names fit the surrounding > conventions, and whether splitting the Windows path into its own patch > is the right call. > > Thanks, > Seongjun Shin --0000000000007902f406531abd1a Content-Type: application/octet-stream; name="v2-0001-Add-wait-events-for-server-logging-destination-wr.patch" Content-Disposition: attachment; filename="v2-0001-Add-wait-events-for-server-logging-destination-wr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mptnhu360 RnJvbSBlODAwYzFkZTdkZTQwYTZkZTQyZDIzNzQyZTg5OTIyMzU2NzkzNWVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTZW9uZ2p1biBTaGluIDxzaGluc2o0NjUzQGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyOSBNYXkgMjAyNiAxNDo0NToyMyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MS8yXSBBZGQgd2FpdCBldmVudHMgZm9yIHNlcnZlciBsb2dnaW5nIGRlc3RpbmF0aW9uIHdyaXRl cwoKV2hlbiBhIGJhY2tlbmQgd3JpdGVzIHRvIHRoZSBzeXNsb2dnZXIgcGlwZSBpbiB3cml0ZV9w aXBlX2NodW5rcygpIG9yCnRvIHN0ZGVyciBpbiB3cml0ZV9jb25zb2xlKCksIHRoZSB1bmRlcmx5 aW5nIHdyaXRlKDIpIGNhbiBibG9jayBvbmNlCnRoZSBwaXBlIGJ1ZmZlciBmaWxscyB1cCBvciB0 aGUgb3V0cHV0IGRldmljZSBpcyBzbG93LiAgVGhlc2UgYmxvY2tpbmcKc3lzY2FsbHMgd2VyZSBu b3QgaW5zdHJ1bWVudGVkLCBzbyBwZ19zdGF0X2FjdGl2aXR5IHJlcG9ydGVkCndhaXRfZXZlbnQg SVMgTlVMTCBkdXJpbmcgdGhhdCB0aW1lLiAgTWFueSBtb25pdG9yaW5nIHRvb2xzIGludGVycHJl dApOVUxMIGFzIG9uLUNQVSB3b3JrLCB3aGljaCBtYWRlIGhlYXZ5LWxvZ2dpbmcgc3RhbGxzIGhh cmQgdG8KYXR0cmlidXRlLgoKQWRkIHR3byBuZXcgV2FpdEV2ZW50SU8gZXZlbnRzIGFuZCByZXBv cnQgdGhlbSBhcm91bmQgdGhlIHJlbGV2YW50CndyaXRlKDIpIGNhbGxzOgoKICBJTyAvIFN5c2xv Z2dlcldyaXRlIC0gd3JpdGUoMikgdG8gdGhlIHN5c2xvZ2dlciBwaXBlIGluc2lkZQogICAgICAg ICAgICAgICAgICAgICAgICB3cml0ZV9waXBlX2NodW5rcygpLgogIElPIC8gU3RkZXJyV3JpdGUg ICAgLSB3cml0ZSgyKSB0byBzdGRlcnIgaW5zaWRlIHdyaXRlX2NvbnNvbGUoKS4KClRoZSBpbnN0 cnVtZW50YXRpb24gaXMgbGltaXRlZCB0byB0aGUgbGVhZiB3cml0ZSBjYWxsLiAgSXQgdXNlcyBv bmx5CnRoZSBleGlzdGluZyBwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQoKS9lbmQoKSBpbmxpbmUg aGVscGVycywgd2hpY2gKYXJlIGFsbG9jYXRpb24tZnJlZSBhbmQgc2FmZSB0byBjYWxsIGJlZm9y ZSBNeVByb2MgaXMgc2V0IHVwLCBzbyB0aGlzCnJlbWFpbnMgc2FmZSB0byBpbnZva2UgZnJvbSB3 aXRoaW4gZXJyb3IgcmVwb3J0aW5nIHBhdGhzLgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0IHwgMiArKwogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3Iv ZWxvZy5jICAgICAgICAgICAgICAgICAgfCA3ICsrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgOSBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudF9uYW1lcy50eHQgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50 X25hbWVzLnR4dAppbmRleCA1NTM3YTJkMjUzMC4uY2UzMzgwN2MzZmUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CkBAIC0yNTMsNiArMjUz LDggQEAgU0xSVV9XUklURQkiV2FpdGluZyBmb3IgYSB3cml0ZSBvZiBhbiBTTFJVIHBhZ2UuIgog U05BUEJVSUxEX1JFQUQJIldhaXRpbmcgZm9yIGEgcmVhZCBvZiBhIHNlcmlhbGl6ZWQgaGlzdG9y aWNhbCBjYXRhbG9nIHNuYXBzaG90LiIKIFNOQVBCVUlMRF9TWU5DCSJXYWl0aW5nIGZvciBhIHNl cmlhbGl6ZWQgaGlzdG9yaWNhbCBjYXRhbG9nIHNuYXBzaG90IHRvIHJlYWNoIGR1cmFibGUgc3Rv cmFnZS4iCiBTTkFQQlVJTERfV1JJVEUJIldhaXRpbmcgZm9yIGEgd3JpdGUgb2YgYSBzZXJpYWxp emVkIGhpc3RvcmljYWwgY2F0YWxvZyBzbmFwc2hvdC4iCitTVERFUlJfV1JJVEUJIldhaXRpbmcg Zm9yIGEgd3JpdGUgdG8gdGhlIHNlcnZlcidzIHN0YW5kYXJkIGVycm9yIHN0cmVhbS4iCitTWVNM T0dHRVJfV1JJVEUJIldhaXRpbmcgZm9yIGEgd3JpdGUgdG8gdGhlIHN5c2xvZ2dlciBwaXBlLiIK IFRJTUVMSU5FX0hJU1RPUllfRklMRV9TWU5DCSJXYWl0aW5nIGZvciBhIHRpbWVsaW5lIGhpc3Rv cnkgZmlsZSByZWNlaXZlZCB2aWEgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIHRvIHJlYWNoIGR1cmFi bGUgc3RvcmFnZS4iCiBUSU1FTElORV9ISVNUT1JZX0ZJTEVfV1JJVEUJIldhaXRpbmcgZm9yIGEg d3JpdGUgb2YgYSB0aW1lbGluZSBoaXN0b3J5IGZpbGUgcmVjZWl2ZWQgdmlhIHN0cmVhbWluZyBy ZXBsaWNhdGlvbi4iCiBUSU1FTElORV9ISVNUT1JZX1JFQUQJIldhaXRpbmcgZm9yIGEgcmVhZCBv ZiBhIHRpbWVsaW5lIGhpc3RvcnkgZmlsZS4iCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9lcnJvci9lbG9nLmMgYi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKaW5kZXggYWE1 MzBkMzY4NWUuLmQ0YzQxZmExMjYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9lcnJv ci9lbG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jCkBAIC04NCw2ICs4 NCw3IEBACiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9wc19z dGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy92YXJsZW5hLmgiCisjaW5jbHVkZSAidXRpbHMvd2Fp dF9ldmVudC5oIgogCiAKIC8qIEluIHRoaXMgbW9kdWxlLCBhY2Nlc3MgZ2V0dGV4dCgpIHZpYSBl cnJfZ2V0dGV4dCgpICovCkBAIC0yNjYyLDcgKzI2NjMsOSBAQCB3cml0ZV9jb25zb2xlKGNvbnN0 IGNoYXIgKmxpbmUsIGludCBsZW4pCiAJICogV2UgaWdub3JlIGFueSBlcnJvciBmcm9tIHdyaXRl KCkgaGVyZS4gIFdlIGhhdmUgbm8gdXNlZnVsIHdheSB0byByZXBvcnQKIAkgKiBpdCAuLi4gY2Vy dGFpbmx5IHdoaW5pbmcgb24gc3RkZXJyIGlzbid0IGxpa2VseSB0byBiZSBwcm9kdWN0aXZlLgog CSAqLworCXBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydChXQUlUX0VWRU5UX1NUREVSUl9XUklURSk7 CiAJcmMgPSB3cml0ZShmaWxlbm8oc3RkZXJyKSwgbGluZSwgbGVuKTsKKwlwZ3N0YXRfcmVwb3J0 X3dhaXRfZW5kKCk7CiAJKHZvaWQpIHJjOwogfQogCkBAIC0zNTAzLDcgKzM1MDYsOSBAQCB3cml0 ZV9waXBlX2NodW5rcyhjaGFyICpkYXRhLCBpbnQgbGVuLCBpbnQgZGVzdCkKIAkJLyogbm8gbmVl ZCB0byBzZXQgUElQRV9QUk9UT19JU19MQVNUIHlldCAqLwogCQlwLnByb3RvLmxlbiA9IFBJUEVf TUFYX1BBWUxPQUQ7CiAJCW1lbWNweShwLnByb3RvLmRhdGEsIGRhdGEsIFBJUEVfTUFYX1BBWUxP QUQpOworCQlwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQoV0FJVF9FVkVOVF9TWVNMT0dHRVJfV1JJ VEUpOwogCQlyYyA9IHdyaXRlKGZkLCAmcCwgUElQRV9IRUFERVJfU0laRSArIFBJUEVfTUFYX1BB WUxPQUQpOworCQlwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKCk7CiAJCSh2b2lkKSByYzsKIAkJZGF0 YSArPSBQSVBFX01BWF9QQVlMT0FEOwogCQlsZW4gLT0gUElQRV9NQVhfUEFZTE9BRDsKQEAgLTM1 MTMsNyArMzUxOCw5IEBAIHdyaXRlX3BpcGVfY2h1bmtzKGNoYXIgKmRhdGEsIGludCBsZW4sIGlu dCBkZXN0KQogCXAucHJvdG8uZmxhZ3MgfD0gUElQRV9QUk9UT19JU19MQVNUOwogCXAucHJvdG8u bGVuID0gbGVuOwogCW1lbWNweShwLnByb3RvLmRhdGEsIGRhdGEsIGxlbik7CisJcGdzdGF0X3Jl cG9ydF93YWl0X3N0YXJ0KFdBSVRfRVZFTlRfU1lTTE9HR0VSX1dSSVRFKTsKIAlyYyA9IHdyaXRl KGZkLCAmcCwgUElQRV9IRUFERVJfU0laRSArIGxlbik7CisJcGdzdGF0X3JlcG9ydF93YWl0X2Vu ZCgpOwogCSh2b2lkKSByYzsKIH0KIAotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000007902f406531abd1a Content-Type: application/octet-stream; name="v2-0002-Report-StderrWrite-wait-event-around-WriteConsole.patch" Content-Disposition: attachment; filename="v2-0002-Report-StderrWrite-wait-event-around-WriteConsole.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mptnhu3j1 RnJvbSA4MjEzNTJhMTE4NzIzOTI1NDdjMGFjNjc5MDg3OGVmMDJkMDI4NGI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTZW9uZ2p1biBTaGluIDxzaGluc2o0NjUzQGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyOSBNYXkgMjAyNiAxNDo1MjoxMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjIg Mi8yXSBSZXBvcnQgU3RkZXJyV3JpdGUgd2FpdCBldmVudCBhcm91bmQgV3JpdGVDb25zb2xlVygp CiBvbiBXaW5kb3dzCgpPbiBXaW5kb3dzLCB3cml0ZV9jb25zb2xlKCkgZW1pdHMgbG9nIG1lc3Nh Z2VzIHRvIHRoZSBjb25zb2xlIHdpdGgKV3JpdGVDb25zb2xlVygpIHJhdGhlciB0aGFuIHdyaXRl KDIpLiAgTGlrZSB0aGUgd3JpdGUoMikgcGF0aCwgdGhpcwpjYWxsIGNhbiBibG9jayBvbiBhIHNs b3cgY29uc29sZSwgbGVhdmluZyB3YWl0X2V2ZW50IElTIE5VTEwgaW4KcGdfc3RhdF9hY3Rpdml0 eS4KCldyYXAgV3JpdGVDb25zb2xlVygpIHdpdGggdGhlIFN0ZGVycldyaXRlIHdhaXQgZXZlbnQg aW50cm9kdWNlZCBpbgp0aGUgcHJldmlvdXMgcGF0Y2gsIHNvIHRoZSBXaW5kb3dzIGNvbnNvbGUg cGF0aCBpcyBpbnN0cnVtZW50ZWQKY29uc2lzdGVudGx5IHdpdGggdGhlIHN0ZGVyciB3cml0ZSgy KSBwYXRoLgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyB8IDMgKysrCiAxIGZp bGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvZXJyb3IvZWxvZy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jCmluZGV4IGQ0 YzQxZmExMjYzLi45YWI3NWI5OWY1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJy b3IvZWxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYwpAQCAtMjYzNSwx MSArMjYzNSwxNCBAQCB3cml0ZV9jb25zb2xlKGNvbnN0IGNoYXIgKmxpbmUsIGludCBsZW4pCiAJ CQlEV09SRAkJd3JpdHRlbjsKIAogCQkJc3RkSGFuZGxlID0gR2V0U3RkSGFuZGxlKFNURF9FUlJP Ul9IQU5ETEUpOworCQkJcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KFdBSVRfRVZFTlRfU1RERVJS X1dSSVRFKTsKIAkJCWlmIChXcml0ZUNvbnNvbGVXKHN0ZEhhbmRsZSwgdXRmMTYsIHV0ZjE2bGVu LCAmd3JpdHRlbiwgTlVMTCkpCiAJCQl7CisJCQkJcGdzdGF0X3JlcG9ydF93YWl0X2VuZCgpOwog CQkJCXBmcmVlKHV0ZjE2KTsKIAkJCQlyZXR1cm47CiAJCQl9CisJCQlwZ3N0YXRfcmVwb3J0X3dh aXRfZW5kKCk7CiAKIAkJCS8qCiAJCQkgKiBJbiBjYXNlIFdyaXRlQ29uc29sZVcoKSBmYWlsZWQs IGZhbGwgYmFjayB0byB3cml0aW5nIHRoZQotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000007902f406531abd1a--