title: getting 0x03 error when performing chart generation: please check your input data in Highchart
body: <ol>
  <li>i am using highchart export server for generate chart in NodeJs</li>
  <li>but when i am generating many charts it gives error like <strong>0x03 error when performing chart generation: please check your input data</strong></li>
  <li><p>here is my code</p>
  
  <pre><code>exports.generateAllCharts = (chartData, callback) =&gt; {
  
  highchartsExporter.initPool({
      maxWorkers: 100,
      initialWorkers: 40,
      workLimit: 100,
      queueSize: 40,
      timeoutThreshold: 600000
  });
  
  var allPromises = [];
  if(!chartData ||chartData.length === 0) {
      return callback({
          code: '4',
          msg: 'Please send chartdata'
      })
  }
  
  allPromises.push(exports.getStockChartImg(chartData[1]));
  allPromises.push(exports.priceChartVsPeersImg(chartData[2]));
  allPromises.push(exports.getPieChartImg(chartData[3]));
  
  allPromises.push(exports.getPieChartImg(chartData[4]));
  allPromises.push(exports.getPieChartImg(chartData[5]));
  allPromises.push(exports.getPieChartImg(chartData[6]));
  
  allPromises.push(exports.getPieChartImg(chartData[13]));
  allPromises.push(exports.getPieChartImg(chartData[14]));
  allPromises.push(exports.getPieChartImg(chartData[15]));
  allPromises.push(exports.getPieChartImg(chartData[16]));
  allPromises.push(exports.getPieChartImg(chartData[18]));
  allPromises.push(exports.getPieChartImg(chartData[19]));
  allPromises.push(exports.getPieChartImg(chartData[7]));
  allPromises.push(exports.getPieChartImg(chartData[17]));
  
  allPromises.push(exports.getPieChartImg(chartData[20]));
  allPromises.push(exports.getPieChartImg(chartData[21]));
  allPromises.push(exports.getPieChartImg(chartData[22]));
  allPromises.push(exports.getPieChartImg(chartData[23]));
  allPromises.push(exports.getPieChartImg(chartData[24]));
  allPromises.push(exports.getPieChartImg(chartData[25]));
  allPromises.push(exports.getPieChartImg(chartData[26]));
  allPromises.push(exports.getPieChartImg(chartData[27]));
  
  allPromises.push(exports.getPieChartImg(chartData[33]));
  allPromises.push(exports.getPieChartImg(chartData[34]));
  allPromises.push(exports.getGlobalOwnershipDistributionChartImg(chartData[35]));
  
  allPromises.push(exports.getPieChartImg(chartData[36]));
  allPromises.push(exports.getPieChartImg(chartData[37]));
  allPromises.push(exports.getPieChartImg(chartData[38]));
  allPromises.push(exports.getPieChartImg(chartData[39]));
  allPromises.push(exports.getPieChartImg(chartData[40]));
  allPromises.push(exports.getPieChartImg(chartData[41]));
  allPromises.push(exports.getPieChartImg(chartData[42]));
  allPromises.push(exports.getPieChartImg(chartData[43]));
  
  
  Promise.all(allPromises)
  .then(data =&gt; {
      highchartsExporter.killPool();
      return  callback({
          code: '0',
          custImg: {
              pc1: data[0].data,
              pc2: data[1].data,
              pc3: data[2].data,
              pc4: data[3].data,
              pc5: data[4].data,
              pc6: data[5].data,
              pc7: data[6].data,
              pc8: data[7].data,
              pc9: data[8].data,
              pc10: data[9].data,
              pc11: data[10].data,
              pc12: data[11].data,
              pc13: data[12].data,
              pc14: data[13].data,
              pc17: data[14].data,
              pc18: data[15].data,
              pc19: data[16].data,
              pc20: data[17].data,
              pc21: data[18].data,
              pc22: data[19].data,
              pc23: data[20].data,
              pc24: data[21].data,
              pc27: data[22].data,
              pc28: data[23].data,
              pc29: data[24].data,
              pc30: data[25].data,
              pc31: data[26].data,
              pc32: data[27].data,
              pc33: data[28].data,
              pc34: data[29].data,
              pc35: data[30].data,
              pc36: data[31].data,
              pc37: data[32].data,
          }
      })
  })
  .catch(err =&gt; callback({
      code: '5',
      msg: 'Error generating charts',
      err,
  }))
  }
  
    exports.getPieChartImg = (seriesData, xOrLength) =&gt; {
      var chartOpts = {
          colors: ['#7380D4', '#749FD4', '#74BFD4', '#74D4B6', '#99EBA8', '#FEE08B', '#FDAE61', '#F07346', '#E65433', '#C92D22'],
          chart: {
              plotBackgroundColor: null,
              plotBorderWidth: null,
              plotShadow: false,
              renderTo: 'container',
              style: {
                  fontSize: '20px',
                  background: '#fffdcc'
              },
              width:650,
          },
          credits: {
              enabled: false
          },
          title: {
              text: null,
          },
          tooltip: {
              pointFormat: '{series.name}: {point.percentage:.1f}%'
          },
          legend: {
              itemStyle: {
                  font: 'sans-serif',
                  fontWeight: 'bold',
                  fontSize: '13px'
              },
              useHTML: true,
              layout: 'vertical',
              align: 'right',
              verticalAlign: 'middle',
              labelFormatter: ()=&gt; {
                  if (this.name[xOrLength] &gt; 9) {
  
                      var words = this.name.split(/[\s]+/);
                      var numWordsPerLine = 1;
                      var str = [];
  
                      for (var word in words) {
                          if (parseInt(word) &gt; 0 &amp;&amp; parseInt(word) % numWordsPerLine == 0)
                              str.push('&lt;br&gt;');
  
                          str.push(words[word]);
                      }
  
                      var label = str.join(' ');
  
                      // Make legend text bold and red if most recent value is less than prior
                      if (this.name[1] &gt; this.name[2]) {
                          return '&lt;span style="font-weight:bold"&gt;' + label + '&lt;/span&gt;';
                      } else {
                          return label;
                      }
                  } else {
                      return this.name;
                  }
              }
          },
          plotOptions: {
              pie: {
                  size: '85%',
                  allowPointSelect: true,
                  cursor: 'pointer',
                  showInLegend: true,
                  dataLabels: {
                      enabled: true,
                      allowOverlap: false,
                      distance: 10,
                      formatter: ()=&gt; {
                          return undefined;
                          // if (parseFloat(this.percentage.toFixed(2)) &gt; 0.35) {
                          //     return '' + parseFloat(this.percentage).toFixed(2) + '%';
                          // }
                      },
                      padding: 5,
                      style: { fontFamily: '\'Lato\', sans-serif', /*lineHeight: '18px',*/ fontWeight: 'normal', fontSize: '18px' }
                  }
              },
              series: {
                  stacking: 'normal',
                  dataLabels: {
                      enabled: true,
                      color: '#6f6f6f',
                      style: { fontFamily: '\'Lato\', sans-serif', /*lineHeight: '18px',*/ fontWeight: 'normal', fontSize: '18px' },
                      format:'{point.percentage:.2f}' 
                  },
                  pointWidth: 30,
                  cursor: 'pointer'
              }
          },
          series: [{
              name: "Value",
              type: 'pie',
              data: seriesData
          }],
          navigation: {
              buttonOptions: {
                  enabled: false
              }
          },
      };
  
      var exportSettings = generateExportSettings(chartOpts, 'Stock');
      return generateBase64Chart(exportSettings, 3)
  }
  function generateExportSettings(chartOpts, constr) {
      return {
          // b64: true,
          instr: JSON.stringify(chartOpts),
          noDownload: true,
          constr,
          globalOptions: {
              colors: ['#7380D4', '#749FD4', '#74BFD4', '#74D4B6', '#99EBA8', '#FEE08B', '#FDAE61', '#F07346', '#E65433', '#C92D22'],
              lang: {
                  thousandsSep: ','
              }
          },
          scale: 2,
          styledMode: false,
          type: "image/png",
          width: false,
      };
  }
  
  function generateBase64Chart(exportSettings, number) {
      return new Promise((resolve, reject) =&gt; {
          //Perform an export
          highchartsExporter.export(exportSettings, function (err, res) {
              //The export result is now in res.
              //If the output is not PDF or SVG, it will be base64 encoded (res.data).
              //If the output is a PDF or SVG, it will contain a filename (res.filename).
              if(err) {
                  Logger.error("IN ERROR: ", number);
                  Logger.error("ERROR: ", err);
                  return reject({
                      code: '1',
                      err,
                      msg: 'Error in stock chart',
                      exportSettings
                  })
              }
              return resolve({
                  code: '0',
                  msg: 'success',
                  data: 'data:image/png;base64,' + res.data,
              })
              //Kill the pool when we're done with it, and exit the application
              // highchartsExporter.killPool();
              // process.exit(1);
          });
      })
  }
  </code></pre></li>
  </ol>
  
  <blockquote>
    <p><strong>i am generating all charts at a time, so how can i solve this problem.</strong></p>
  </blockquote>