[Tex/LaTex] biber: Caught signal – SEGV – how to find the problematic bibtex entry

biberbiblatexerrors

I'M still trying to make biber work after switching my bibtex .tex files to UTF-8 and importing some new entries.

INFO - This is Biber 1.9
INFO - Config file is '/Users/myname/.biber.conf'
INFO - Logfile is 'Diss.blg'
INFO - Reading 'Diss.bcf'
INFO - Using all citekeys in bib section 0
INFO - Processing section 0
INFO - Looking for bibtex format file 'references.bib' for section 0
INFO - Decoding LaTeX character macros into UTF-8
INFO - Found BibTeX data source 'references.bib'
WARN - Overwriting field 'year' with year value from field 'date' for entry '1991'
WARN - Overwriting field 'year' with year value from field 'date' for entry 'Thomas-Vielma2008'
FATAL - Caught signal: SEGV
Likely your .bib has a very bad entry which causes libbtparse to crash: 

I already cleaned a lot in my bibtex file, but I still don't get a bibliography in my pdf, cause biber seems to have a problem with something, but in the .blg log file I don't find a hint on the problematic line.

  • Is there another log file which could tell me what's going wrong here?
  • How can I fix the problem as quick as possible?
  • It seems that biber processes all entries, even if they are not cited – is this correct?
  • Is there an option for biber which makes it less "picky" about the entries and still produces at least a bibliography for those who work?
  • In the .bib file there are about 3000 entries, so testing by hand for each one is not an option. Is there a way to automate this testing process or print out the last processed entry?

Best Answer

Systematic automated approach for finding the problematic entry

It was suggested to eliminate half of the bibtex entries and this way reduce the number of suspects further.

As I am lazy (and would not know how to do that in an easy way), I used the following semi-automatic method (all done in Terminal in MacOS X 10.6:

  • created a copy of my .bib file in an empty directory
  • mkdir bibentries
    created a new directory named bibentries
  • split -p @ -a 4 mybibfilename.bib ./bibentries/
    split my bib file into one file per entry, all created in the bibentries directory
  • cd bibentries
    switched to bibentries directory
  • for old in *; do mv $old $old.bib; done
    added extension .bib to all files in bibentries directory
  • rm -rfbiber --cache``
    cleared biber cache
  • sh ~/bin/batchbiber.sh
    run biber on all files (see bash script below)

Script batchbiber.sh (located in my home path ~/bin/ )

(If you don't have ~/bin/ in your home path, you can create it using mkdir bin.)

#!/bin/bash
# script processes all .bib files in current direcory with "biber --tool"
let n=0 # counter for files
# count files and print their number
for j in *.bib; do 
let n=n+1
done
echo $n bibtex files found
# process files one by one with biber --tool
for j in *.bib; do 
biber --tool $j
done
  • grep -i SEGV *.blg
    search for error message in the created .blg files

... and bingo, I found one entry with this error and easily spotted the problem: one excessive comma:

 Author                   = {Liao,Hongmei and Coyle, ,Thomas W.},

:-)