Thread: BUG #13561: "could not write to log file, Bad file descriptor" error when working with huge table
BUG #13561: "could not write to log file, Bad file descriptor" error when working with huge table
From
manuel.pallier@beko.at
Date:
The following bug has been logged on the website: Bug reference: 13561 Logged by: Manuel Pallier Email address: manuel.pallier@beko.at PostgreSQL version: 9.4.4 Operating system: Windows Server 2008 SP2 x64 Description: I'm having a big problem with a PostreSQL database on a specific machine. Whenever I do some specific things with a huge table (over 9 million rows) the whole postgres process crashes with the following entries in the log file: PANIC: could not write to log file 000000010000000000000022 at offset 11673600, length 909312: Bad file descriptor LOG: WAL writer process (PID 17056) exited with exit code 3 LOG: terminating any other active server processes WARNING: terminating connection because of crash of another server process CONTEXT: COPY fund_records, line 2088885: "..." LOG: PID 31820 in cancel request did not match any process LOG: all server processes terminated; reinitializing FATAL: pre-existing shared memory block is still in use HINT: Check if there are any old server processes still running, and terminate them. The `CONTEXT` is of course differnt depending on what I did. The above `COPY` command was logged when restoring a dump with the big table with pg_restore. Other occurrences were `VACUUM` (when I run vacuum on either the single big table or the whole database) or even `SELECT` (when I run a simple 1 row result select joining the big table). I can reproduce this crash 100% by either running vacuum on the table or trying to restore the table data from a dump. Other things, like select statements, do not reproduce always, but at least they crash often enough that it is very annoying. It's always the `could not write to log file x at offset y, length z: Bad file descriptor` error. I've already tried disabling autovacuum during pg_resotre but it still fails. This problem seems to be specific to one server, because the same table/dump works fine when I import it on my local machine. The affected server is a virtual (on Parallels Virtuozzo base) Windows Server 2008 SP2 x64 with 2 GB RAM. There is only a single HDD partition and nearly 40 GB of free space on it. Nothing other than PostgreSQL is running on the server, also no anti virus software. But PostgreSQL is the only application on this server that shows problems, all other operations I've tried work fine, so it seems like it's not a general problem with this machine. I've tried PostgreSQL server versions 8.4.4 (this was running for years until it first showed the error), 8.4.22 and 9.4.4, all show the same error. I've tried both upgrading from 8.4.4 to 8.4.22 and fresh installs of 8.4.22 and 9.4.4 (there I've also completely deleted the data folder) multiple times. Since I've changed some values in postgresql.conf away from their default values, the the crash now happens much rarer. Simple SQL and DML statements only crash very rarely (once every few days), but VACUUM still crashes 100%. Here are the values I changed: shared_buffers = 128MB work_mem = 16MB maintenance_work_mem = 64MB wal_buffers = 4MB Can someone please explain what's wrong here?
Re: BUG #13561: "could not write to log file, Bad file descriptor" error when working with huge table
From
"Pallier, Manuel / BEKO Graz"
Date:
SGksDQoNCj4gQ291bGQgeW91IGhlbHAgdXMga25vdyB0aGUgc2l6ZSBvZiB0aGUgZGF0YWJhc2Ug eW91IGFyZSBkdW1waW5nID8NClRoZSBzaXplIG9mIHRoZSBkYXRhIGRpcmVjdG9yeSBpcyAzLjM3 IEdCLiBUaGUgc2l6ZSBvZiB0aGUgZHVtcCBmaWxlIHdpdGggLS1jb21wcmVzcz05IGlzIDMwMCBN Qi4NCg0KPiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBhIFdpbmRvd3MgbWVtb3J5IGFsbG9jYXRp b24gcHJvYmxlbS4gRG8geW91IHNlZSBhbnkgc3VjaCBpc3N1ZXMgbGlrZSBjb3JydXB0aW9uIHdp dGggbWVtb3J5IG9yIGhhcmQtZGlzayA/DQpObywgYWxsIG90aGVyIG9wZXJhdGlvbnMgb24gdGhl IG1hY2hpbmUgd29ya3MgZmluZSwgaW5jbHVkaW5nIGNvcHlpbmcgbGFyZ2UgZmlsZXMgYW5kIGlu c3RhbGxhdGlvbiBvZiBzb2Z0d2FyZS4gQnV0IEkgY2Fu4oCZdCBkbyByZWFsIG1lbW9yeSBvciBo YXJkLWRpc2sgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGp1c3QgYSB2aXJ0dWFsIG1hY2hpbmUgYW5k IEkgZG9u4oCZdCBoYXZlIGFueSBhY2Nlc3MgdG8gdGhlIHBoeXNpY2FsIG1hY2hpbmUuDQoNCj4g QXNzdW1pbmcgYWxsIGlzIHdlbGwgd2l0aCB0aGUgaGFyZHdhcmUsIElmIHlvdSBjYW4gdHJ5IGFu ZCBpbmNyZWFzZSB0aGUgc2hhcmVkX2J1ZmZlcnMgYW5kIHNlZSBpZiB0aGF0IGltcHJvdmVzIHRo ZSBzaXR1YXRpb24uDQpBcyB3cml0dGVuLCBJ4oCZdmUgYWxyZWFkeSBpbmNyZWFzZWQgc2hhcmVk X2J1ZmZlcnMgdG8gMTI4TUIgYW5kIGl0IGluZGVlZCBpbXByb3ZlZCB0aGUgc2l0dWF0aW9uLiBC dXQgaXQgaXNu4oCZdCByZXNvbHZlZC4gV2hhdCB2YWx1ZSB3b3VsZCB5b3Ugc3VnZ2VzdD8NCg0K QmVzdCByZWdhcmRzLA0KTWFudWVsDQoNCg0KVm9uOiBWZW5rYXRhIEJhbGFqaSBOIFttYWlsdG86 bmFnMTAxMEBnbWFpbC5jb21dDQpHZXNlbmRldDogTWl0dHdvY2gsIDEyLiBBdWd1c3QgMjAxNSAw Mjo0OA0KQW46IFBhbGxpZXIsIE1hbnVlbCAvIEJFS08gR3Jheg0KQmV0cmVmZjogUmU6IFtCVUdT XSBCVUcgIzEzNTYxOiAiY291bGQgbm90IHdyaXRlIHRvIGxvZyBmaWxlLCBCYWQgZmlsZSBkZXNj cmlwdG9yIiBlcnJvciB3aGVuIHdvcmtpbmcgd2l0aCBodWdlIHRhYmxlDQoNCg0KT24gVHVlLCBB dWcgMTEsIDIwMTUgYXQgMzo0MSBQTSwgPG1hbnVlbC5wYWxsaWVyQGJla28uYXQ8bWFpbHRvOm1h bnVlbC5wYWxsaWVyQGJla28uYXQ+PiB3cm90ZToNClRoZSBmb2xsb3dpbmcgYnVnIGhhcyBiZWVu IGxvZ2dlZCBvbiB0aGUgd2Vic2l0ZToNCg0KQnVnIHJlZmVyZW5jZTogICAgICAxMzU2MQ0KTG9n Z2VkIGJ5OiAgICAgICAgICBNYW51ZWwgUGFsbGllcg0KRW1haWwgYWRkcmVzczogICAgICBtYW51 ZWwucGFsbGllckBiZWtvLmF0PG1haWx0bzptYW51ZWwucGFsbGllckBiZWtvLmF0Pg0KUG9zdGdy ZVNRTCB2ZXJzaW9uOiA5LjQuNA0KT3BlcmF0aW5nIHN5c3RlbTogICBXaW5kb3dzIFNlcnZlciAy MDA4IFNQMiB4NjQNCkRlc2NyaXB0aW9uOg0KDQpJJ20gaGF2aW5nIGEgYmlnIHByb2JsZW0gd2l0 aCBhIFBvc3RyZVNRTCBkYXRhYmFzZSBvbiBhIHNwZWNpZmljIG1hY2hpbmUuDQpXaGVuZXZlciBJ IGRvIHNvbWUgc3BlY2lmaWMgdGhpbmdzIHdpdGggYSBodWdlIHRhYmxlIChvdmVyIDkgbWlsbGlv biByb3dzKQ0KdGhlIHdob2xlIHBvc3RncmVzIHByb2Nlc3MgY3Jhc2hlcyB3aXRoIHRoZSBmb2xs b3dpbmcgZW50cmllcyBpbiB0aGUgbG9nDQpmaWxlOg0KDQpQQU5JQzogIGNvdWxkIG5vdCB3cml0 ZSB0byBsb2cgZmlsZSAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMjIgYXQgb2Zmc2V0DQoxMTY3MzYw MCwgbGVuZ3RoIDkwOTMxMjogQmFkIGZpbGUgZGVzY3JpcHRvcg0KTE9HOiAgV0FMIHdyaXRlciBw cm9jZXNzIChQSUQgMTcwNTYpIGV4aXRlZCB3aXRoIGV4aXQgY29kZSAzDQpMT0c6ICB0ZXJtaW5h dGluZyBhbnkgb3RoZXIgYWN0aXZlIHNlcnZlciBwcm9jZXNzZXMNCldBUk5JTkc6ICB0ZXJtaW5h dGluZyBjb25uZWN0aW9uIGJlY2F1c2Ugb2YgY3Jhc2ggb2YgYW5vdGhlciBzZXJ2ZXIgcHJvY2Vz cw0KQ09OVEVYVDogIENPUFkgZnVuZF9yZWNvcmRzLCBsaW5lIDIwODg4ODU6ICIuLi4iDQpMT0c6 ICBQSUQgMzE4MjAgaW4gY2FuY2VsIHJlcXVlc3QgZGlkIG5vdCBtYXRjaCBhbnkgcHJvY2Vzcw0K TE9HOiAgYWxsIHNlcnZlciBwcm9jZXNzZXMgdGVybWluYXRlZDsgcmVpbml0aWFsaXppbmcNCkZB VEFMOiAgcHJlLWV4aXN0aW5nIHNoYXJlZCBtZW1vcnkgYmxvY2sgaXMgc3RpbGwgaW4gdXNlDQpI SU5UOiAgQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvbGQgc2VydmVyIHByb2Nlc3NlcyBzdGlsbCBy dW5uaW5nLCBhbmQNCnRlcm1pbmF0ZSB0aGVtLg0KDQpUaGUgYENPTlRFWFRgIGlzIG9mIGNvdXJz ZSBkaWZmZXJudCBkZXBlbmRpbmcgb24gd2hhdCBJIGRpZC4gVGhlIGFib3ZlDQpgQ09QWWAgY29t bWFuZCB3YXMgbG9nZ2VkIHdoZW4gcmVzdG9yaW5nIGEgZHVtcCB3aXRoIHRoZSBiaWcgdGFibGUg d2l0aA0KcGdfcmVzdG9yZS4gT3RoZXIgb2NjdXJyZW5jZXMgd2VyZSBgVkFDVVVNYCAod2hlbiBJ IHJ1biB2YWN1dW0gb24gZWl0aGVyIHRoZQ0Kc2luZ2xlIGJpZyB0YWJsZSBvciB0aGUgd2hvbGUg ZGF0YWJhc2UpIG9yIGV2ZW4gYFNFTEVDVGAgKHdoZW4gSSBydW4gYQ0Kc2ltcGxlIDEgcm93IHJl c3VsdCBzZWxlY3Qgam9pbmluZyB0aGUgYmlnIHRhYmxlKS4NCg0KSSBjYW4gcmVwcm9kdWNlIHRo aXMgY3Jhc2ggMTAwJSBieSBlaXRoZXIgcnVubmluZyB2YWN1dW0gb24gdGhlIHRhYmxlIG9yDQp0 cnlpbmcgdG8gcmVzdG9yZSB0aGUgdGFibGUgZGF0YSBmcm9tIGEgZHVtcC4gT3RoZXIgdGhpbmdz LCBsaWtlIHNlbGVjdA0Kc3RhdGVtZW50cywgZG8gbm90IHJlcHJvZHVjZSBhbHdheXMsIGJ1dCBh dCBsZWFzdCB0aGV5IGNyYXNoIG9mdGVuIGVub3VnaA0KdGhhdCBpdCBpcyB2ZXJ5IGFubm95aW5n LiBJdCdzIGFsd2F5cyB0aGUgYGNvdWxkIG5vdCB3cml0ZSB0byBsb2cgZmlsZSB4IGF0DQpvZmZz ZXQgeSwgbGVuZ3RoIHo6IEJhZCBmaWxlIGRlc2NyaXB0b3JgIGVycm9yLiBJJ3ZlIGFscmVhZHkg dHJpZWQgZGlzYWJsaW5nDQphdXRvdmFjdXVtIGR1cmluZyBwZ19yZXNvdHJlIGJ1dCBpdCBzdGls bCBmYWlscy4NCg0KVGhpcyBwcm9ibGVtIHNlZW1zIHRvIGJlIHNwZWNpZmljIHRvIG9uZSBzZXJ2 ZXIsIGJlY2F1c2UgdGhlIHNhbWUgdGFibGUvZHVtcA0Kd29ya3MgZmluZSB3aGVuIEkgaW1wb3J0 IGl0IG9uIG15IGxvY2FsIG1hY2hpbmUuIFRoZSBhZmZlY3RlZCBzZXJ2ZXIgaXMgYQ0KdmlydHVh bCAob24gUGFyYWxsZWxzIFZpcnR1b3p6byBiYXNlKSBXaW5kb3dzIFNlcnZlciAyMDA4IFNQMiB4 NjQgd2l0aCAyIEdCDQpSQU0uIFRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgSEREIHBhcnRpdGlvbiBh bmQgbmVhcmx5IDQwIEdCIG9mIGZyZWUgc3BhY2Ugb24NCml0LiBOb3RoaW5nIG90aGVyIHRoYW4g UG9zdGdyZVNRTCBpcyBydW5uaW5nIG9uIHRoZSBzZXJ2ZXIsIGFsc28gbm8gYW50aQ0KdmlydXMg c29mdHdhcmUuIEJ1dCBQb3N0Z3JlU1FMIGlzIHRoZSBvbmx5IGFwcGxpY2F0aW9uIG9uIHRoaXMg c2VydmVyIHRoYXQNCnNob3dzIHByb2JsZW1zLCBhbGwgb3RoZXIgb3BlcmF0aW9ucyBJJ3ZlIHRy aWVkIHdvcmsgZmluZSwgc28gaXQgc2VlbXMgbGlrZQ0KaXQncyBub3QgYSBnZW5lcmFsIHByb2Js ZW0gd2l0aCB0aGlzIG1hY2hpbmUuDQoNCkkndmUgdHJpZWQgUG9zdGdyZVNRTCBzZXJ2ZXIgdmVy c2lvbnMgOC40LjQgKHRoaXMgd2FzIHJ1bm5pbmcgZm9yIHllYXJzDQp1bnRpbCBpdCBmaXJzdCBz aG93ZWQgdGhlIGVycm9yKSwgOC40LjIyIGFuZCA5LjQuNCwgYWxsIHNob3cgdGhlIHNhbWUgZXJy b3IuDQpJJ3ZlIHRyaWVkIGJvdGggdXBncmFkaW5nIGZyb20gOC40LjQgdG8gOC40LjIyIGFuZCBm cmVzaCBpbnN0YWxscyBvZiA4LjQuMjINCmFuZCA5LjQuNCAodGhlcmUgSSd2ZSBhbHNvIGNvbXBs ZXRlbHkgZGVsZXRlZCB0aGUgZGF0YSBmb2xkZXIpIG11bHRpcGxlDQp0aW1lcy4NCg0KU2luY2Ug SSd2ZSBjaGFuZ2VkIHNvbWUgdmFsdWVzIGluIHBvc3RncmVzcWwuY29uZiBhd2F5IGZyb20gdGhl aXIgZGVmYXVsdA0KdmFsdWVzLCB0aGUgdGhlIGNyYXNoIG5vdyBoYXBwZW5zIG11Y2ggcmFyZXIu IFNpbXBsZSBTUUwgYW5kIERNTCBzdGF0ZW1lbnRzDQpvbmx5IGNyYXNoIHZlcnkgcmFyZWx5IChv bmNlIGV2ZXJ5IGZldyBkYXlzKSwgYnV0IFZBQ1VVTSBzdGlsbCBjcmFzaGVzIDEwMCUuDQpIZXJl IGFyZSB0aGUgdmFsdWVzIEkgY2hhbmdlZDoNCg0Kc2hhcmVkX2J1ZmZlcnMgPSAxMjhNQg0Kd29y a19tZW0gPSAxNk1CDQptYWludGVuYW5jZV93b3JrX21lbSA9IDY0TUINCndhbF9idWZmZXJzID0g NE1CDQoNCkNhbiBzb21lb25lIHBsZWFzZSBleHBsYWluIHdoYXQncyB3cm9uZyBoZXJlPw0KDQpD b3VsZCB5b3UgaGVscCB1cyBrbm93IHRoZSBzaXplIG9mIHRoZSBkYXRhYmFzZSB5b3UgYXJlIGR1 bXBpbmcgPyBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBhIFdpbmRvd3MgbWVtb3J5IGFsbG9jYXRp b24gcHJvYmxlbS4gRG8geW91IHNlZSBhbnkgc3VjaCBpc3N1ZXMgbGlrZSBjb3JydXB0aW9uIHdp dGggbWVtb3J5IG9yIGhhcmQtZGlzayA/DQpBc3N1bWluZyBhbGwgaXMgd2VsbCB3aXRoIHRoZSBo YXJkd2FyZSwgSWYgeW91IGNhbiB0cnkgYW5kIGluY3JlYXNlIHRoZSBzaGFyZWRfYnVmZmVycyBh bmQgc2VlIGlmIHRoYXQgaW1wcm92ZXMgdGhlIHNpdHVhdGlvbi4NClJlZ2FyZHMsDQpWZW5rYXRh IEJhbGFqaSBODQpGdWppdHN1IEF1c3RyYWxpYQ0KDQoNCg==