aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/init/miscinit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/init/miscinit.c')
-rw-r--r--src/backend/utils/init/miscinit.c39
1 files changed, 22 insertions, 17 deletions
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index deb2d582b2a..f04ae80f10d 100644
--- a/src/backend/utils/init/miscinit.c
+++ b/src/backend/utils/init/miscinit.c
@@ -825,29 +825,34 @@ CreateLockFile(const char *filename, bool amPostmaster,
*/
if (isDDLock)
{
- char *ptr;
+ char *ptr = NULL;
unsigned long id1,
id2;
+ int lineno;
- ptr = strchr(buffer, '\n');
- if (ptr != NULL &&
- (ptr = strchr(ptr + 1, '\n')) != NULL)
+ for (lineno = 1; lineno <= 4; lineno++)
{
- ptr++;
- if (sscanf(ptr, "%lu %lu", &id1, &id2) == 2)
+ if ((ptr = strchr(ptr, '\n')) == NULL)
{
- if (PGSharedMemoryIsInUse(id1, id2))
- ereport(FATAL,
- (errcode(ERRCODE_LOCK_FILE_EXISTS),
- errmsg("pre-existing shared memory block "
- "(key %lu, ID %lu) is still in use",
- id1, id2),
- errhint("If you're sure there are no old "
- "server processes still running, remove "
- "the shared memory block "
- "or just delete the file \"%s\".",
- filename)));
+ elog(LOG, "bogus data in \"%s\"", DIRECTORY_LOCK_FILE);
+ break;
}
+ ptr++;
+ }
+
+ if (ptr && sscanf(ptr, "%lu %lu", &id1, &id2) == 2)
+ {
+ if (PGSharedMemoryIsInUse(id1, id2))
+ ereport(FATAL,
+ (errcode(ERRCODE_LOCK_FILE_EXISTS),
+ errmsg("pre-existing shared memory block "
+ "(key %lu, ID %lu) is still in use",
+ id1, id2),
+ errhint("If you're sure there are no old "
+ "server processes still running, remove "
+ "the shared memory block "
+ "or just delete the file \"%s\".",
+ filename)));
}
}