I found a source code line that prints warning in the source code (src/backend/utils/mmgr/aset.c, line 1496) /* │ 1492 * Check for overwrite of padding space in an allocated chunk. │ 1493 */ │ 1494 if (chunk->aset == (void *) set && dsize < chsize && │ 1495 !sentinel_ok(chunk, ALLOC_CHUNKHDRSZ + dsize)) │B+>1496 elog(WARNING, "problem in alloc set %s: detected write past chunk end in block %p, chunk %p", │ 1497 name, block, chunk);
In my extension c code. I assigned value at the allocated memory address and I found this assigned statement occurs warning should I don't use it like this? ``` char *buffer = palloc(7 * sizeof(char)); unsigned int offset = sizeof(buffer); > buffer[--offset] = '\0'; /* here */ ``` 2022년 2월 20일 (일) 오후 7:29, Julien Rouhaud <rjuju...@gmail.com>님이 작성: > > Hi, > > On Sun, Feb 20, 2022 at 07:23:56PM +0900, Dong Wook Lee wrote: > > Hi hackers, > > I've read in this blog ( > > http://big-elephants.com/2015-10/writing-postgres-extensions-part-i/) > > and I wrote an extension about base36_encode with c code > > but when I executed a query like this below I got a warning below. > > > > ``` > > postgres=# SELECT base36_encode(123); > > WARNING: problem in alloc set ExprContext: detected write past chunk end > > in block 0x55fb75334d40, chunk 0x55fb75334d68 > > WARNING: problem in alloc set ExprContext: detected write past chunk end > > in block 0x55fb75334d40, chunk 0x55fb75334d68 > > base36_encode > > --------------- > > 3f > > (1 row) > > ``` > > > > I don't know what this warning means and how I can fix it. > > It means that you have some problem in your memory allocation. You can refer > to src/backend/utils/mmgr/aset.c for more details on those safety checks.