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.94.2) (envelope-from ) id 1rd2aY-003Wbm-KN for pgsql-odbc@arkaria.postgresql.org; Thu, 22 Feb 2024 06:29:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rd2aW-008TVO-Q3 for pgsql-odbc@arkaria.postgresql.org; Thu, 22 Feb 2024 06:29:45 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rd2aW-008TVG-HA for pgsql-odbc@lists.postgresql.org; Thu, 22 Feb 2024 06:29:45 +0000 Received: from mail-io1-xd2d.google.com ([2607:f8b0:4864:20::d2d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rd2aU-000IDz-EH for pgsql-odbc@lists.postgresql.org; Thu, 22 Feb 2024 06:29:44 +0000 Received: by mail-io1-xd2d.google.com with SMTP id ca18e2360f4ac-7c77cff6ee8so25523239f.0 for ; Wed, 21 Feb 2024 22:29:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708583379; x=1709188179; darn=lists.postgresql.org; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=eeBdz4S6gLPUaGRcXLEbY4scpWmgZaQyNxZQ6ifg53M=; b=NegQE45GYGa+0OzKQY6QTtNdot7gI/yZu6KlDsstSSePL9McP4pSwz49L09WcRIJr3 vp/FAv5QdJeHR8bJSTAxPixEjatfNsmlmfP0JbCLGyAIIp8Ou/Ix9JH52vkITuGFnldS i0qQtlo9vWe+soIs4m53ibVlx8EWicVAs+XRFO4RrX2CzOTTdwJ2WiWMuuU1bg3nfiNf gJ2HNsyKtihL4nWgVbisryGBDd/o5Db2J/RqmVmuOnUMkxZjh1abPdr/Y3DgVrZDxyuK BaDl6GjrSNlpWd/CWSlJquf/EehKOfSVjp6boDFomRE35u3purR9JsvC/bS/6eh/pZgH nCMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708583379; x=1709188179; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=eeBdz4S6gLPUaGRcXLEbY4scpWmgZaQyNxZQ6ifg53M=; b=U12zxkGxMxmVvtSCkhSaTEMPtb04NgkZ3B9Eu0RfqQRykBNFJxIKDbXpsEEoasF9Jp s/RYK7jmeBxUKK93SY23Ww3huME03Ii+jmSHsIeO/zexm4va7fyjDKDrRTKFto7bq89b OxC+jcEqe8xZR5nRO3Fcz+9f2SMLmjHj4XTOAXvG2LWerGBo2dmns4Yx/tLG0u9DCUzb MiCgUah8Cka7F7yvw42mLiNhHlZ5gIGNnKMjnqz9aHiDPbnrUt3WHLYau9hLeWhFO0XO iErfHmHsv9FatpdIXic8aZJbwXBikfGt5OEBRRG7kPthGYmUYsl6NjbgzFF9i2CFqfcc kPXQ== X-Gm-Message-State: AOJu0YwudjHTYV6Erk/Z+phTPLXdzdkJcgLNKBLqApP/hoGd5akKYikA nj627uMFLYZvNUhr2EQblJ/GOlOz9j9H1UA9pxyNI6zjTYNKDWpN3NTSZm53m5w= X-Google-Smtp-Source: AGHT+IHOywe4PSa8cHXzcgp7VI3omdkfZGiQp6tdbYpJGzbEnbIH+vCgpKVAjDB8xW9Vq20Xh7n70w== X-Received: by 2002:a6b:c906:0:b0:7c4:6e81:a9f7 with SMTP id z6-20020a6bc906000000b007c46e81a9f7mr25591271iof.13.1708583379015; Wed, 21 Feb 2024 22:29:39 -0800 (PST) Received: from [192.168.0.17] ([5.136.67.161]) by smtp.gmail.com with ESMTPSA id h12-20020a0566380f0c00b0047422a25714sm2325244jas.137.2024.02.21.22.29.37 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 21 Feb 2024 22:29:38 -0800 (PST) Content-Type: multipart/mixed; boundary="------------zCT4eB0630w5n0tORZvr6jpX" Message-ID: <112f6883-34e4-4372-8bda-d04f45ee31bf@gmail.com> Date: Thu, 22 Feb 2024 13:29:35 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: pgsql-odbc@lists.postgresql.org From: Andrey Sukhanov Subject: psqlodbc crashes while collecting diagnostic records with SQLGetDiagRecW List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------zCT4eB0630w5n0tORZvr6jpX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Dear pgsql-odbc developers, Windows 10,  psqlodbc 16 (psqlodbc35w.dll), postgresql 11. Getting certain amount of diagnostic records with SQLGetDiagRecW crashes the application with memory access violation. Steps to reproduce: 1. Create procedure: CREATE OR REPLACE PROCEDURE crashme() LANGUAGE plpgsql AS $$ BEGIN FOR i IN 1..841 LOOP         RAISE NOTICE 'msgmsgmsgmsg (%)', i; END LOOP; END; $$; 2. Use example code in attachments. 3. Application crashes with memory access violation after calling SQLGetDiagRecW function, with iRecord = 332. Application doesn't crash if number of iterations in  procedure's for loop is changed. Expected outcome: SQLGetDiagRecW would return SQL_NO_DATA when there's no more diagnostic records. Regards, Andrey --------------zCT4eB0630w5n0tORZvr6jpX Content-Type: text/x-c++src; charset=UTF-8; name="sqlgetdiagrec_crash.cpp" Content-Disposition: attachment; filename="sqlgetdiagrec_crash.cpp" Content-Transfer-Encoding: base64 I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8c3RyaW5n PgojaW5jbHVkZSA8c3FsLmg+CiNpbmNsdWRlIDxzcWxleHQuaD4KCi8vIENvbGxlY3RzIGRp YWdub3N0aWMgcmVjb3JkcyB3aXRob3V0IHdpdGhvdXQgc2F2aW5nIHVudGlsIFNRTF9OT19E QVRBLgp2b2lkIENvbGxlY3REaWFnUmVjb3JkcyhTUUxTTUFMTElOVCBobmRsVHlwZSwgU1FM SEFORExFIGhuZGwpCnsKCWNvbnN0ZXhwciBzaXplX3QgbXNnQnVmZmVyU2l6ZSA9IDEwMDsK CglTUUxJTlRFR0VSIGVycm9yOwoJU1FMU01BTExJTlQgbXNnU2l6ZXsgMCB9OwoJU1FMV0NI QVIgbXNnQnVmZmVyW21zZ0J1ZmZlclNpemVdOwoJU1FMV0NIQVIgc3RhdGVbU1FMX1NRTFNU QVRFX1NJWkUgKyAxXTsKCglmb3IoU1FMU01BTExJTlQgaW5kZXggPSAxOyA7ICsraW5kZXgp Cgl7CiAgICAgICAgLy8gQ3Jhc2hlcyBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2l0 aCBpbmRleCA9PSAzMzIuIEl0IGlzIGRlcGVuZGFudCBvbiBtc2dCdWZmZXJTaXplIGFuZCBT UUwgcHJvY2VkdXJlLgoJCWF1dG8gZGlhZ1JldCA9IFNRTEdldERpYWdSZWMoCgkJCWhuZGxU eXBlLAoJCQlobmRsLAoJCQlpbmRleCwKCQkJc3RhdGUsCgkJCSZlcnJvciwKCQkJbXNnQnVm ZmVyLAoJCQkoU1FMU01BTExJTlQpbXNnQnVmZmVyU2l6ZSwKCQkJJm1zZ1NpemUpOwoKCgkJ c3dpdGNoKGRpYWdSZXQpCgkJewoJCWNhc2UgU1FMX1NVQ0NFU1M6CgkJCS8vQk9PU1RfTE9H X1RSSVZJQUwoaW5mbykgPDwgaW5kZXggPDwgIiAiIDw8IGJvb3N0Ojpsb2NhbGU6OmNvbnY6 OnV0Zl90b191dGY8Y2hhcj4oc3RhdGUsIHN0YXRlICsgU1FMX1NRTFNUQVRFX1NJWkUpIDw8 ICIgIiA8PCBib29zdDo6bG9jYWxlOjpjb252Ojp1dGZfdG9fdXRmPGNoYXI+KG1zZ0J1ZmZl ciwgbXNnQnVmZmVyICsgbXNnU2l6ZSkgPDwgc3RkOjplbmRsOwoJCQljb250aW51ZTsKCgkJ Y2FzZSBTUUxfU1VDQ0VTU19XSVRIX0lORk86CgkJewoJCQlhdXRvIGJ1ZmZlclNpemUgPSBt c2dTaXplICsgMTsKCQkJc3RkOjp1bmlxdWVfcHRyPCBTUUxXQ0hBUltdID4gYnVmeyBuZXcg U1FMV0NIQVJbYnVmZmVyU2l6ZV0gfTsKCQkJU1FMR2V0RGlhZ1JlYyhobmRsVHlwZSwgaG5k bCwgaW5kZXgsIHN0YXRlLCAmZXJyb3IsIGJ1Zi5nZXQoKSwgYnVmZmVyU2l6ZSwgJm1zZ1Np emUpOwoJCX0KCQljb250aW51ZTsKCgkJY2FzZSBTUUxfSU5WQUxJRF9IQU5ETEU6CgkJCXRo cm93IHN0ZDo6cnVudGltZV9lcnJvcigiQ29sbGVjdERpYWdSZWNvcmRzIFNRTF9JTlZBTElE X0hBTkRMRSIpOwoKCQljYXNlIFNRTF9FUlJPUjoKCQkJdGhyb3cgc3RkOjpydW50aW1lX2Vy cm9yKCJDb2xsZWN0RGlhZ1JlY29yZHMgU1FMX0VSUk9SIik7CgoJCWNhc2UgU1FMX05PX0RB VEE6CgkJCS8vIEVuZCBjb2xsZWN0aW5nIGRpYWcgaW5mbwoJCQlyZXR1cm47CgkJfQoJfQp9 CgppbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCnsKCXRyeQoJewoJCVNRTEhEQkMg aGRiYyA9IG51bGxwdHI7CgkJU1FMSEVOViBoZW52ID0gbnVsbHB0cjsKCgkJLy8gQWxsb2Nh dGUgZW52aXJvbm1lbnQgaGFuZGxlCgkJYXV0byByZXQgPSBTUUxBbGxvY0hhbmRsZShTUUxf SEFORExFX0VOViwgU1FMX05VTExfSEFORExFLCAmaGVudik7CgoJCWlmKHJldCAhPSBTUUxf U1VDQ0VTUyAmJiByZXQgIT0gU1FMX1NVQ0NFU1NfV0lUSF9JTkZPKQoJCXsKCQkJdGhyb3cg c3RkOjpydW50aW1lX2Vycm9yKCJTUUxBbGxvY0hhbmRsZSBTUUxfSEFORExFX0VOViIpOwoJ CX0KCgkJU1FMU2V0RW52QXR0cihoZW52LCBTUUxfQVRUUl9PREJDX1ZFUlNJT04sICh2b2lk KilTUUxfT1ZfT0RCQzMsIDApOwoKCQkvLyBBbGxvY2F0ZSBjb25uZWN0aW9uIGhhbmRsZQoJ CXJldCA9IFNRTEFsbG9jSGFuZGxlKFNRTF9IQU5ETEVfREJDLCBoZW52LCAmaGRiYyk7CgoJ CWlmKHJldCAhPSBTUUxfU1VDQ0VTUyAmJiByZXQgIT0gU1FMX1NVQ0NFU1NfV0lUSF9JTkZP KQoJCXsKCQkJQ29sbGVjdERpYWdSZWNvcmRzKFNRTF9IQU5ETEVfRU5WLCBoZW52KTsKCQkJ dGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTUUxBbGxvY0hhbmRsZSBTUUxfSEFORExFX0RC QyIpOwoJCX0KCgkJLy8gQ29ubmVjdAoJCVNRTFdDSEFSIGNvbm5TdHJpbmdbXSA9IEwiRHJp dmVyPXtQb3N0Z3JlU1FMIFVuaWNvZGUoeDY0KX07U2VydmVyPTEyNy4wLjAuMTtQb3J0PTU0 MzM7RGF0YWJhc2U9Y3Jhc2hkYjtVaWQ9dXNlcjE7UHdkPXVzZXIxOyI7CgkJcmV0ID0gU1FM RHJpdmVyQ29ubmVjdChoZGJjLCBudWxscHRyLCBjb25uU3RyaW5nLCBzaXplb2YoY29ublN0 cmluZykvc2l6ZW9mKFNRTFdDSEFSKSwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgU1FMX0RSSVZF Ul9OT1BST01QVCk7CgoJCWlmKHJldCAhPSBTUUxfU1VDQ0VTUyAmJiByZXQgIT0gU1FMX1NV Q0NFU1NfV0lUSF9JTkZPKQoJCXsKCQkJQ29sbGVjdERpYWdSZWNvcmRzKFNRTF9IQU5ETEVf REJDLCBoZGJjKTsKCQkJdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTUUxEcml2ZXJDb25u ZWN0Iik7CgkJfQoKCQlTUUxIU1RNVCBoc3RtdDsKCQlyZXQgPSBTUUxBbGxvY0hhbmRsZShT UUxfSEFORExFX1NUTVQsIGhkYmMsICZoc3RtdCk7CgoJCWlmKHJldCAhPSBTUUxfU1VDQ0VT UyAmJiByZXQgIT0gU1FMX1NVQ0NFU1NfV0lUSF9JTkZPKQoJCXsKCQkJdGhyb3cgc3RkOjpy dW50aW1lX2Vycm9yKCJTUUxBbGxvY0hhbmRsZSBTUUxfSEFORExFX1NUTVQiKTsKCQl9CgoJ CVNRTFdDSEFSIHF1ZXJ5W10gPSBMIkNBTEwgcHVibGljLmNyYXNobWUoKSI7CgkJcmV0ID0g U1FMRXhlY0RpcmVjdChoc3RtdCwgcXVlcnksIHNpemVvZihxdWVyeSkvc2l6ZW9mKFNRTFdD SEFSKSk7CgoJCXN3aXRjaChyZXQpCgkJewoJCWNhc2UgU1FMX1NVQ0NFU1M6CgkJCWJyZWFr OwoKCQljYXNlIFNRTF9TVUNDRVNTX1dJVEhfSU5GTzoKICAgICAgICAgICAgLy8gU1FMIFBy b2NlZHVyZSBjcmFzaG1lKCkgcmV0dXJucyAiTk9USUNFIiBtZXNzYWdlcywgd2hpY2ggY2F1 c2VzIFNRTEV4ZWNEaXJlY3QgcmV0dXJuIFNRTF9TVUNDRVNTX1dJVEhfSU5GTy4KCQkJQ29s bGVjdERpYWdSZWNvcmRzKFNRTF9IQU5ETEVfU1RNVCwgaHN0bXQpOwoJCQlicmVhazsKCgkJ ZGVmYXVsdDoKCQkJdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTUUxFeGVjRGlyZWN0IGRl ZmF1bHQiKTsKCQl9CgoJCVNRTEZyZWVIYW5kbGUoU1FMX0hBTkRMRV9TVE1ULCBoc3RtdCk7 CgkJU1FMRGlzY29ubmVjdChoZGJjKTsKCQlTUUxGcmVlSGFuZGxlKFNRTF9IQU5ETEVfREJD LCBoZGJjKTsKCQlTUUxGcmVlSGFuZGxlKFNRTF9IQU5ETEVfRU5WLCBoZW52KTsKCX0KCWNh dGNoKHN0ZDo6ZXhjZXB0aW9uJiBlKQoJewoJCXN0ZDo6Y2VyciA8PCBlLndoYXQoKSA8PCBz dGQ6OmVuZGw7CgkJcmV0dXJuIC0xOwoJfQoKCXJldHVybiAwOwp9Cg== --------------zCT4eB0630w5n0tORZvr6jpX--