[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#501960: kernel bug?



reassign 501960 flex
thanks

It is clear that the aforementioned changeset is the change that
caused flex to begin failing. But, I don't see any evidence that the
kernel change is faulty.

PAGE_SIZE on ia64 kernels is larger than most architectures - 16K
is what most distributions (including Debian) use. An effect of the
above changeset, as verified by strace, is that the read() and write()
system calls issued by flex on a pipe will use this bigger
size. fread() appears to be properly hiding the actual read size and
is returning 8192 byte buffers to flex upon request. I verified by
this by instrumenting YY_INPUT to compare the fread data with the
original input file.

Its probably useful to note that the corruption happening here is that
the last 382 lines of the input file is being prefixed to the output
file. The only differences in the remainder of the file are the #line
numbers. I've also found that bumping YY_READ_BUF_SIZE up to 16384
seems to workaround the problem - but that may just be putting it back
into hiding.

My understanding of flex's codebase is nearly non-existant, but
filter.c:filter_apply_chain() looks like a reasonable place to suspect
an issue.

-- 
dann frazier




Reply to: