Batch operations: callback_batch_operation() not invoked I have a batch process where the callback_batch_operation() functions are never called, as showed when logging with some Devel dd() calls.

Here is the involved code fundamental parts (all this in the same multilang.admin.inc file):

function multilang_default_form_submit($form, &amp;$form_state) {
  $operations = array();
  if ($categories = $form_state['values']['default']) {
    foreach ($categories as $category) {
      if ($category) {
        $operations[] = array('multilang_default_process', $category);
      }
    }
  }
  $batch = array(
    'title' =&gt; '...',
    'init_message' =&gt; '...',
    'operations' =&gt; $operations,
    'finished' =&gt; 'multilang_default_finished',
    'file' =&gt; drupal_get_path('module', 'multilang') . '/multilang.admin.inc',
  );
  dd($batch, '$batch'); ## log
  batch_set($batch);
}

function multilang_default_process($category, &amp;$context) {
  dd(func_get_args(), 'default_process'); ## log
  // ...do the desired job...
}

function multilang_default_finished($success, $results, $operations) {
  dd(func_get_args(), 'multilang_default_finished() args'); ## log
  // ...send appropriate messages...
}


And here is the log result, in a case where only one operation was required:

$batch: Array
(
    [title] =&gt; Resetting Multilang configuration
    [operations] =&gt; Array
        (
            [0] =&gt; Array
                (
                    [0] =&gt; multilang_default_process
                    [1] =&gt; multilang_exclude_paths
                )

        )
    [finished] =&gt; multilang_default_finished
    [file] =&gt; sites/all/modules/multilang/multilang.admin.inc
)

default_finished: Array
(
    [0] =&gt; 1
    [1] =&gt; Array
        (
        )
    [2] =&gt; Array
        (
        )
    [3] =&gt; 0 sec
)


The above log shows that the multilang_default_process() function is not called, though correctly stated as callback_batch_operation in $batch.

Obviously the first suspicion after the function's correct spelling, goes to its localization through the file index in $batch.
But not only I multiple checked it, but also we can notice that the default_finished() function gets called, while it is localized through the same file index.
This is also ensured by the fact that, if I intentionally set file to another, incorrect value, then the default_finished() function is not called.

Another puzzling thing (at least at my eyes) is the default_finished() passed arguments: despite no callback_batch_operation was called, $success (index 0) is set to TRUE and (remaining to process) $operations (index 2) is empty.

Am I missing (like it happens too often :-) something stupidly obvious...?
Yes, it was stupidly obvious!

When bulding my $operations I wrote
$operations[] = array('multilang_default_process', $category);
while according to the batch_set&#40;&#41; documentation it should be
$operations[] = array('multilang_default_process', array($category));

Sigh...