Dmitry, although I haven't yet reproduced this, I just pushed a change that causes C-Reduce to give up on a pass that might be stuck in a no-progress loop.

It's very easy to write passes that contain this problem, so this may be generally useful. Up to now I had avoided adding this feature since I'd rather find bugs than hide them, but I also added a command line option that gives the old behavior.

John



On 06/09/2013 08:02 AM, Дмитрий Дьяченко wrote:
John,
its a strange quest :)

I'll try write step-by-step guide. Sorry, my English is bad.
I can send quick guide "Fedora 19: How to install creduce" if needed.

At first, I hit err with gcc-4.8.0 / Fedora 19 alpha
gcc-4.8.1 / Fedora 19 beta FAIL too

Probably, all You need to reproduce is Linux distro with gcc-4.8.[01] installed

May be, this sequence contains extra (unneeded) steps.

All mentioned files You can find in attach.

gcc -fpreprocessed -flto -c s.i
g++ -fpreprocessed -flto -c a.ii

ar cru tmp.a a.o
ranlib tmp.a
ld -m elf_x86_64 -r -o tmp.o --whole-archive tmp.a s.o --no-whole-archive
ar cru lib1.a tmp.o

cp s.o s2.o
ld -m elf_x86_64 -r -o tmp2.o --whole-archive s2.o --no-whole-archive

g++ -fpreprocessed -flto -c x.ii
g++ -O0 -flto -o tst x.o lib1.a tmp2.o # FAIL
with messages smth like
<<strcat>> has already been defined
"errors during merging of translation units"

$ cat x.sh
g++ -fpreprocessed -flto -c x.ii > a 2>&1 && \
g++ -O0 -flto -o tst x.o /home/dimhen/errs/gcc-4.9/n/esp/tmp2.o
/home/dimhen/errs/gcc-4.9/n/esp/lib1.a > a 2>&1
grep "previously defined here" a  > /dev/null 2>&1

$ creduce x.sh x.ii
[...]
(55.3 %, 877 bytes)
===< pass_clang :: remove-enum-member-value >===
===< pass_clang :: remove-unused-var >===
===< pass_special :: a >===
===< pass_special :: b >===
^C
$

Thanks,
Dmitry

2013/6/9 John Regehr <[email protected]>:
Dmitry, can you send me instructions for reproducing a C-Reduce hang on the
current code?

Thanks,


John



On 06/08/2013 02:58 PM, Дмитрий Дьяченко wrote:

John,
with creduce-latest + clang-3.2 I got the same crash in test #6.
Now I find crash-file in temporary directory in creduce/tests/
Crash-file attached.

Sorry, I not mention early why I try clang-latest + creduce-latest: at
first, to my fun :), and second, in hope to provide useful feedback to
your research group.
I do gcc-bug-hunting relatively rare and for each new one I try new
clang + new creduce :)

May be you find interesting [preliminary] comparison of
creduce-current with clang-3.2/3.4-trunk

1. comparison creduce/tests/run_tests
a) the same tests FAIL and PASS
b) test #6 crash with both clang's versions
c) elapsed time in seconds as run_tests reports
      3.2     3.4-current
0: 922      207
1: 23         28
2: 928      212
3: 17         24
6: 2209   1048

2. comparison for real-world tasks:
results are identical with both versions of clang -- reductions hang

Thanks,
Dmitry

2013/6/8 John Regehr <[email protected]>:

Hi Dmitry,

I'm in the middle of some more C-Reduce changes right now.  It might be
best
to not use the current version until things stabilize a bit.


-- tests 0..3 PASS
-- tests 4, 5, 7 FAIL with



I'll look into this, thanks for letting us know.


0.    <eof> parser at end of file
sh: line 1: 23784 Segmentation fault      (core dumped)
/home/dimhen/build/creduce/creduce/../clang_delta/clang_delta
--transformation=return-void --counter=1
/home/dimhen/tmp/creduce-WStouG/small.c > /tmp/file0I5kCp



Right now we only develop and test using Clang 3.2, so we can't help you
with crashes against the LLVM top of tree.  It's super easy to download
the
3.2 binary distribution and compile C-Reduce against it, so I'd ask you
to
just do that.

I have not seen any hangs like you are seeing, but it could easily be
that I
have introduced new bugs lately.  I'm still making some changes to the
core
of C-Reduce but will hopefully be done soon, and then I'll try to
reproduce
the problems you are seeing.

John

Reply via email to